libcamera: object: Add deleteLater() support
This commit adds support to schedule the deletion of an Object to the thread it is bound to (similar to [1]). An Object getting destroyed by a different thread is considered as a violation as per the libcamera threading model. This will be useful for an Object where its ownership is shared via shared pointers in different threads. If the thread which drops the last reference of the Object is a different thread, the destructors get called in that particular thread, not the one Object is bound to. Hence, in order to resolve this kind of situation, the creation of shared pointer can be accompanied by a custom deleter which in turns use deleteLater() to ensure the Object is destroyed in its own thread. [1] https://doc.qt.io/qt-5/qobject.html#deleteLater Signed-off-by: Umang Jain <email@uajain.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
committed by
Laurent Pinchart
parent
3fe7c1cdb4
commit
9558886f7a
@@ -49,6 +49,8 @@ std::atomic_uint Message::nextUserType_{ Message::UserMessage };
|
||||
* \brief Asynchronous method invocation across threads
|
||||
* \var Message::ThreadMoveMessage
|
||||
* \brief Object is being moved to a different thread
|
||||
* \var Message::DeferredDelete
|
||||
* \brief Object is scheduled for deletion
|
||||
* \var Message::UserMessage
|
||||
* \brief First value available for user-defined messages
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user