[libcamera-devel] [PATCH 07/14] py: cam.py: exit on exception
Tomi Valkeinen
tomi.valkeinen at ideasonboard.com
Mon May 16 16:10:15 CEST 2022
Catch exceptions in the event_handler, as they would get ignored
otherwise. Print the exception and return False so that the main loop
exits.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>
---
src/py/cam/cam.py | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/src/py/cam/cam.py b/src/py/cam/cam.py
index 012b191c..c7da97d7 100755
--- a/src/py/cam/cam.py
+++ b/src/py/cam/cam.py
@@ -11,6 +11,7 @@ import binascii
import libcamera as libcam
import os
import sys
+import traceback
class CustomAction(argparse.Action):
@@ -286,19 +287,23 @@ def capture_start(contexts):
# Called from renderer when there is a libcamera event
def event_handler(state):
- cm = state['cm']
- contexts = state['contexts']
+ try:
+ cm = state['cm']
+ contexts = state['contexts']
- os.read(cm.efd, 8)
+ os.read(cm.efd, 8)
- reqs = cm.get_ready_requests()
+ reqs = cm.get_ready_requests()
- for req in reqs:
- ctx = next(ctx for ctx in contexts if ctx['idx'] == req.cookie)
- request_handler(state, ctx, req)
+ for req in reqs:
+ ctx = next(ctx for ctx in contexts if ctx['idx'] == req.cookie)
+ request_handler(state, ctx, req)
- running = any(ctx['reqs-completed'] < ctx['opt-capture'] for ctx in contexts)
- return running
+ running = any(ctx['reqs-completed'] < ctx['opt-capture'] for ctx in contexts)
+ return running
+ except Exception as e:
+ traceback.print_exc()
+ return False
def request_handler(state, ctx, req):
--
2.34.1
More information about the libcamera-devel
mailing list