[libcamera-devel] [PATCH v4 05/15] py: simple-capture.py: Use new events support

Tomi Valkeinen tomi.valkeinen at ideasonboard.com
Thu Mar 9 15:25:51 CET 2023


Update simple-capture.py to the new event model.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 src/py/examples/simple-capture.py | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/py/examples/simple-capture.py b/src/py/examples/simple-capture.py
index 4b85408f..4fa36d6f 100755
--- a/src/py/examples/simple-capture.py
+++ b/src/py/examples/simple-capture.py
@@ -107,17 +107,22 @@ def main():
     sel.register(cm.event_fd, selectors.EVENT_READ)
 
     while frames_done < TOTAL_FRAMES:
-        # cm.get_ready_requests() does not block, so we use a Selector to wait
-        # for a camera event. Here we should almost always get a single
-        # Request, but in some cases there could be multiple or none.
+        # cm.get_events() does not block, so we use a Selector to wait for a
+        # camera event. Here we should almost always get a single request
+        # completion event, but in some cases there could be multiple ones,
+        # other events, or no events at all.
 
         events = sel.select()
         if not events:
             continue
 
-        reqs = cm.get_ready_requests()
+        for ev in cm.get_events():
+            # We are only interested in RequestCompleted events
+            if ev.type != libcam.Event.Type.RequestCompleted:
+                continue
+
+            req = ev.request
 
-        for req in reqs:
             frames_done += 1
 
             buffers = req.buffers
-- 
2.34.1



More information about the libcamera-devel mailing list