Message ID | 20230309142601.70556-1-tomi.valkeinen@ideasonboard.com |
---|---|
Headers | show |
Series |
|
Related | show |
On 09/03/2023 16:25, Tomi Valkeinen wrote: > Hi, > > I sent the v3 of the series ("[PATCH v3 00/17] Python bindings event > handling") more than half a year ago. I've addressed the review comments > which I think make sense and are more or less obvious. In fact, I > made those changes quite soon after receiving them, again over half a > year ago. I also added some additional patches on top (the unittest > improvements). > > But then I never had time to work on the biggest question, how to handle > the events, and so I never sent the v4. And then recently I added even > more patches on top. So I tought I'll just do a bit of work on the > series to introduce another way to manage the events, just as a hackish > RFC, and send the series. Perhaps there are more people interested in > the py bindings now, and we will get more discussion and ideas. I don't > want us to totally forget this series =). > > So, here it is. The "py: New event handling" patch adds the events as in > v3. But in the topmost patch, "py: Hack for different event enable > mechanism" I draft another way we might handle the enabling and > disabling of the events. > > One thing I didn't change was Laurent's comment that camera.stop() > should not return the disconnect events, only the request and buffer > completed events. I'm still not sure about that, but I think if we go > with the method I introduce in the topmost patch, it probably makes > sense to leave the disconnect events alone in camera.stop(). > > And, for those not familiar with the series: This changes the Python API > in a breaking manner. Changes to scripts using the Python bindings are > needed (see the "Use new events support" patches): > > - Many methods throw exceptions now, instead of returning an error value A clarification here: The exception related changes to py scripts are done in the "py: Use exceptions instead of returning error codes" patch. Tomi > - The handling of events has changed. Previously it was all about > request completed, and no other events. Now we support all the events. > > Tomi > > Tomi Valkeinen (15): > py: Use exceptions instead of returning error codes > py: New event handling > py: cam.py: Use new events support > py: unittests.py: Use new events support > py: simple-capture.py: Use new events support > py: simple-continuous-capture.py: Use new events support > py: simple-cam.py: Use new events support > py: Drop get_ready_requests() > py: Add hotplug-monitor.py > py: unittests.py: Add weakref helpers and use del > py: unittests.py: Add test for refs & keep-alives > py: unittests.py: Fix type checker warnings > py: Move Color Space and Transform classes to separate files > py: Improve stub type generation for PyCameraEvent > py: Hack for different event enable mechanism > > src/py/cam/cam.py | 44 +-- > src/py/examples/hotplug-monitor.py | 39 +++ > src/py/examples/simple-cam.py | 34 +-- > src/py/examples/simple-capture.py | 36 ++- > src/py/examples/simple-continuous-capture.py | 38 +-- > src/py/libcamera/meson.build | 2 + > src/py/libcamera/py_camera_manager.cpp | 180 +++++++++-- > src/py/libcamera/py_camera_manager.h | 68 ++++- > src/py/libcamera/py_color_space.cpp | 71 +++++ > src/py/libcamera/py_main.cpp | 303 +++++++++++-------- > src/py/libcamera/py_transform.cpp | 81 +++++ > test/py/unittests.py | 280 ++++++++++++----- > 12 files changed, 853 insertions(+), 323 deletions(-) > create mode 100644 src/py/examples/hotplug-monitor.py > create mode 100644 src/py/libcamera/py_color_space.cpp > create mode 100644 src/py/libcamera/py_transform.cpp >