[libcamera-devel] [PATCH v2 0/3] Add Object::deleteLater() support
Umang Jain
email at uajain.com
Fri Jul 31 12:53:41 CEST 2020
Implementation of Object::deleteLater() which ensures shared objects
are deleted in the thread to which they belong. This fixes the issue
where on hot-unplug, the Camera object is deleted in QCam's application
thread instead of CameraManager's thread and triggering the ASSERT()
in processNotifier (since the event notifier got deleted out of
context in a different thread). See [1] for discussion.
[1] https://lists.libcamera.org/pipermail/libcamera-devel/2020-July/010951.html
Changes in v2:
- Extend Thread::setEventDispatcher to selectively deliver messages
- This will help if we want to explicitly deliver some messages if
event loop is not running.
- Include Object::deleteLater() unit test
- One \todo here as one case pending to cover; multiple
deleteLater() should only delete the object once.
- Review comments (mostly documentation fixes).
Umang Jain (3):
libcamera: thread: Support selective message dispatch to thread
libcamera: object: Add deleteLater() support
libcamera: camera: Ensure deletion via deleteLater()
include/libcamera/camera.h | 3 +-
include/libcamera/internal/message.h | 2 +
include/libcamera/internal/thread.h | 3 +-
include/libcamera/object.h | 2 +
src/libcamera/camera.cpp | 2 +-
src/libcamera/camera_manager.cpp | 6 +-
src/libcamera/event_dispatcher_poll.cpp | 2 +-
src/libcamera/message.cpp | 4 +
src/libcamera/object.cpp | 48 +++++++++
src/libcamera/thread.cpp | 47 ++++++---
test/meson.build | 1 +
test/object-delete.cpp | 125 ++++++++++++++++++++++++
12 files changed, 227 insertions(+), 18 deletions(-)
create mode 100644 test/object-delete.cpp
--
2.26.2
More information about the libcamera-devel
mailing list