summaryrefslogtreecommitdiff
path: root/src/qcam/assets/feathericons/aperture.svg
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-10-12 03:05:09 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-10-15 05:05:46 +0300
commit2f75a7e5b8c6258dc12e9e3128cb30133f66b4f9 (patch)
tree353fcff20b894720435cd4f30928fec834016e3c /src/qcam/assets/feathericons/aperture.svg
parent211d6f5ca6adfa5d90a73e753d17478123ba887f (diff)
libcamera: v4l2_subdevice: Set format field to V4L2_FIELD_NONE
libcamera doesn't support interlaced formats, set the field to V4L2_FIELD_NONE explicitly instead of relying on drivers to interpret V4L2_FIELD_ANY the way we want it. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/qcam/assets/feathericons/aperture.svg')
0 files changed, 0 insertions, 0 deletions
opt">{ protected: static void sigAlarmHandler(int) { cout << "SIGALARM received" << endl; if (interrupt) dispatcher->interrupt(); } int init() { dispatcher = Thread::current()->eventDispatcher(); struct sigaction sa = {}; sa.sa_handler = &sigAlarmHandler; sigaction(SIGALRM, &sa, nullptr); return 0; } int run() { Timer timer; /* Event processing interruption by signal. */ std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now(); timer.start(1000); struct itimerval itimer = {}; itimer.it_value.tv_usec = 500000; interrupt = false; setitimer(ITIMER_REAL, &itimer, nullptr); dispatcher->processEvents(); std::chrono::steady_clock::time_point stop = std::chrono::steady_clock::now(); std::chrono::steady_clock::duration duration = stop - start; int msecs = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count(); if (abs(msecs - 1000) > 50) { cout << "Event processing restart test failed" << endl; return TestFail; } /* Event processing interruption. */ timer.start(1000); dispatcher->interrupt(); dispatcher->processEvents(); if (!timer.isRunning()) { cout << "Event processing immediate interruption failed" << endl; return TestFail; } timer.start(1000); itimer.it_value.tv_usec = 500000; interrupt = true; setitimer(ITIMER_REAL, &itimer, nullptr); dispatcher->processEvents(); if (!timer.isRunning()) { cout << "Event processing delayed interruption failed" << endl; return TestFail; } return TestPass; } void cleanup() { } }; TEST_REGISTER(EventDispatcherTest)