[libcamera-devel,0/4] Event dispatcher enhancements
mbox series

Message ID 20190123085923.12524-1-laurent.pinchart@ideasonboard.com
Headers show
Series
  • Event dispatcher enhancements
Related show

Message

Laurent Pinchart Jan. 23, 2019, 8:59 a.m. UTC
Hello,

This patch series enhances the event dispatcher with two new features.
In patch 2/4 we get EINTR support to automatically restart the ppoll()
call if it gets interrupted by a signal, and in patch 3/4 the event
dispatcher API is extended with a function to interrupt in-progress
processEvents() calls. This is needed in order to interrupt event loops
gracefully.

The series starts in patch 1/4 by adding a test that fails, to outline
missing EINTR support, which is then fixed by patch 2/4. It ends with
another test case for the new EventDispatcher::interrupt() method.

Laurent Pinchart (4):
  tests: Test event dispatcher interruption by signal
  libcamera: event_dispatcher_poll: Handle interrupted ppoll() calls
  libcamera: event_dispatcher: Add interrupt() function
  tests: event-dispatcher: Add processEvents() interruption test

 include/libcamera/event_dispatcher.h          |   2 +
 src/libcamera/event_dispatcher.cpp            |  10 ++
 src/libcamera/event_dispatcher_poll.cpp       |  82 ++++++++++----
 src/libcamera/include/event_dispatcher_poll.h |   4 +
 test/event-dispatcher.cpp                     | 103 ++++++++++++++++++
 test/meson.build                              |   9 +-
 6 files changed, 184 insertions(+), 26 deletions(-)
 create mode 100644 test/event-dispatcher.cpp

Comments

Niklas Söderlund Jan. 23, 2019, 1:19 p.m. UTC | #1
Hi Laurent,

Thanks for your work.

With the comment Kieran brings up about the possible collision with 
poll() in 2/4 addressed, for the whole series

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

On 2019-01-23 10:59:19 +0200, Laurent Pinchart wrote:
> Hello,
> 
> This patch series enhances the event dispatcher with two new features.
> In patch 2/4 we get EINTR support to automatically restart the ppoll()
> call if it gets interrupted by a signal, and in patch 3/4 the event
> dispatcher API is extended with a function to interrupt in-progress
> processEvents() calls. This is needed in order to interrupt event loops
> gracefully.
> 
> The series starts in patch 1/4 by adding a test that fails, to outline
> missing EINTR support, which is then fixed by patch 2/4. It ends with
> another test case for the new EventDispatcher::interrupt() method.
> 
> Laurent Pinchart (4):
>   tests: Test event dispatcher interruption by signal
>   libcamera: event_dispatcher_poll: Handle interrupted ppoll() calls
>   libcamera: event_dispatcher: Add interrupt() function
>   tests: event-dispatcher: Add processEvents() interruption test
> 
>  include/libcamera/event_dispatcher.h          |   2 +
>  src/libcamera/event_dispatcher.cpp            |  10 ++
>  src/libcamera/event_dispatcher_poll.cpp       |  82 ++++++++++----
>  src/libcamera/include/event_dispatcher_poll.h |   4 +
>  test/event-dispatcher.cpp                     | 103 ++++++++++++++++++
>  test/meson.build                              |   9 +-
>  6 files changed, 184 insertions(+), 26 deletions(-)
>  create mode 100644 test/event-dispatcher.cpp
> 
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel