[libcamera-devel] [PATCH v4 11/16] py: merge read_event() and get_ready_requests()
Tomi Valkeinen
tomi.valkeinen at ideasonboard.com
Mon May 30 16:27:17 CEST 2022
We always call CameraManager.read_event() and
CameraManager.get_ready_requests(), so to simplify the use merge the
read_event() into the get_ready_requests().
This has the side effect that get_ready_requests() will now block if
there is no event ready. If we ever need to call get_ready_requests() in
a polling manner we will need a new function which behaves differently.
However, afaics the only sensible way to manage the event loop is to use
select/poll on the eventfd and then call get_ready_requests() once,
which is the use case what the current merged function supports.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>
---
src/py/cam/cam.py | 2 --
src/py/libcamera/py_main.cpp | 7 ++-----
test/py/unittests.py | 4 ----
3 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/src/py/cam/cam.py b/src/py/cam/cam.py
index bf8529d9..2ae89fa8 100755
--- a/src/py/cam/cam.py
+++ b/src/py/cam/cam.py
@@ -243,8 +243,6 @@ class CaptureState:
# Called from renderer when there is a libcamera event
def event_handler(self):
try:
- self.cm.read_event()
-
reqs = self.cm.get_ready_requests()
for req in reqs:
diff --git a/src/py/libcamera/py_main.cpp b/src/py/libcamera/py_main.cpp
index fcf009f0..505cc3dc 100644
--- a/src/py/libcamera/py_main.cpp
+++ b/src/py/libcamera/py_main.cpp
@@ -213,15 +213,12 @@ PYBIND11_MODULE(_libcamera, m)
return gEventfd;
})
- .def("read_event", [](CameraManager &) {
+ .def("get_ready_requests", [](CameraManager &) {
uint8_t buf[8];
- int ret = read(gEventfd, buf, 8);
- if (ret != 8)
+ if (read(gEventfd, buf, 8) != 8)
throw std::system_error(errno, std::generic_category());
- })
- .def("get_ready_requests", [](CameraManager &) {
std::vector<Request *> v;
{
diff --git a/test/py/unittests.py b/test/py/unittests.py
index 33b35a0a..9adc4337 100755
--- a/test/py/unittests.py
+++ b/test/py/unittests.py
@@ -210,8 +210,6 @@ class SimpleCaptureMethods(CameraTesterBase):
reqs = []
while True:
- cm.read_event()
-
ready_reqs = cm.get_ready_requests()
reqs += ready_reqs
@@ -283,8 +281,6 @@ class SimpleCaptureMethods(CameraTesterBase):
while running:
events = sel.select()
for key, _ in events:
- cm.read_event()
-
ready_reqs = cm.get_ready_requests()
reqs += ready_reqs
--
2.34.1
More information about the libcamera-devel
mailing list