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
|
# Called from renderer when there is a libcamera event
|
||||||
def event_handler(self):
|
def event_handler(self):
|
||||||
try:
|
try:
|
||||||
self.cm.read_event()
|
|
||||||
|
|
||||||
reqs = self.cm.get_ready_requests()
|
reqs = self.cm.get_ready_requests()
|
||||||
|
|
||||||
for req in reqs:
|
for req in reqs:
|
||||||
|
|
|
@ -213,15 +213,12 @@ PYBIND11_MODULE(_libcamera, m)
|
||||||
return gEventfd;
|
return gEventfd;
|
||||||
})
|
})
|
||||||
|
|
||||||
.def("read_event", [](CameraManager &) {
|
.def("get_ready_requests", [](CameraManager &) {
|
||||||
uint8_t buf[8];
|
uint8_t buf[8];
|
||||||
|
|
||||||
int ret = read(gEventfd, buf, 8);
|
if (read(gEventfd, buf, 8) != 8)
|
||||||
if (ret != 8)
|
|
||||||
throw std::system_error(errno, std::generic_category());
|
throw std::system_error(errno, std::generic_category());
|
||||||
})
|
|
||||||
|
|
||||||
.def("get_ready_requests", [](CameraManager &) {
|
|
||||||
std::vector<Request *> v;
|
std::vector<Request *> v;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -210,8 +210,6 @@ class SimpleCaptureMethods(CameraTesterBase):
|
||||||
reqs = []
|
reqs = []
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
cm.read_event()
|
|
||||||
|
|
||||||
ready_reqs = cm.get_ready_requests()
|
ready_reqs = cm.get_ready_requests()
|
||||||
|
|
||||||
reqs += ready_reqs
|
reqs += ready_reqs
|
||||||
|
@ -283,8 +281,6 @@ class SimpleCaptureMethods(CameraTesterBase):
|
||||||
while running:
|
while running:
|
||||||
events = sel.select()
|
events = sel.select()
|
||||||
for key, _ in events:
|
for key, _ in events:
|
||||||
cm.read_event()
|
|
||||||
|
|
||||||
ready_reqs = cm.get_ready_requests()
|
ready_reqs = cm.get_ready_requests()
|
||||||
|
|
||||||
reqs += ready_reqs
|
reqs += ready_reqs
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue