py: Merge read_event() and get_ready_requests()
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@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
b4bb5ce629
commit
7ef83e0228
3 changed files with 2 additions and 11 deletions
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue