py: Add CameraManager.read_event()
Add CameraManager.read_event() so that the user does not need to call os.read(). We use eventfd, and we must always read 8 bytes. Hiding that inside read_event() makes sense. 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
ccfcf5f235
commit
210ce547a4
3 changed files with 10 additions and 4 deletions
|
@ -9,7 +9,6 @@
|
||||||
import argparse
|
import argparse
|
||||||
import binascii
|
import binascii
|
||||||
import libcamera as libcam
|
import libcamera as libcam
|
||||||
import os
|
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
|
@ -294,7 +293,7 @@ def event_handler(state):
|
||||||
cm = state['cm']
|
cm = state['cm']
|
||||||
contexts = state['contexts']
|
contexts = state['contexts']
|
||||||
|
|
||||||
os.read(cm.efd, 8)
|
cm.read_event()
|
||||||
|
|
||||||
reqs = cm.get_ready_requests()
|
reqs = cm.get_ready_requests()
|
||||||
|
|
||||||
|
|
|
@ -212,6 +212,14 @@ PYBIND11_MODULE(_libcamera, m)
|
||||||
return gEventfd;
|
return gEventfd;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.def("read_event", [](CameraManager &) {
|
||||||
|
uint8_t buf[8];
|
||||||
|
|
||||||
|
int ret = read(gEventfd, buf, 8);
|
||||||
|
if (ret != 8)
|
||||||
|
throw std::system_error(errno, std::generic_category());
|
||||||
|
})
|
||||||
|
|
||||||
.def("get_ready_requests", [](CameraManager &) {
|
.def("get_ready_requests", [](CameraManager &) {
|
||||||
std::vector<Request *> v;
|
std::vector<Request *> v;
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ from collections import defaultdict
|
||||||
import errno
|
import errno
|
||||||
import gc
|
import gc
|
||||||
import libcamera as libcam
|
import libcamera as libcam
|
||||||
import os
|
|
||||||
import selectors
|
import selectors
|
||||||
import time
|
import time
|
||||||
import typing
|
import typing
|
||||||
|
@ -278,7 +277,7 @@ class SimpleCaptureMethods(CameraTesterBase):
|
||||||
while running:
|
while running:
|
||||||
events = sel.select()
|
events = sel.select()
|
||||||
for key, _ in events:
|
for key, _ in events:
|
||||||
os.read(key.fd, 8)
|
cm.read_event()
|
||||||
|
|
||||||
ready_reqs = cm.get_ready_requests()
|
ready_reqs = cm.get_ready_requests()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue