diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2019-10-27 02:45:17 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-10-29 16:44:46 +0200 |
commit | fb1a5c0416ebd516a5ef01ba76deed1b602828ba (patch) | |
tree | 58a18ff78d6179a3deedb74750aca2214fce7d39 /src | |
parent | 06008b9156b74885aa2382dec9dc8c7854ca6f2e (diff) |
libcamera: object: Add connection type parameter to invokeMethod()
Allow specifying a different connection type than ConnectionTypeQueued
for Object::invokeMethod().
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src')
-rw-r--r-- | src/android/camera_proxy.cpp | 3 | ||||
-rw-r--r-- | src/libcamera/event_notifier.cpp | 3 | ||||
-rw-r--r-- | src/libcamera/object.cpp | 9 | ||||
-rw-r--r-- | src/libcamera/timer.cpp | 3 |
4 files changed, 11 insertions, 7 deletions
diff --git a/src/android/camera_proxy.cpp b/src/android/camera_proxy.cpp index 4f5c0a02..43e1e1c3 100644 --- a/src/android/camera_proxy.cpp +++ b/src/android/camera_proxy.cpp @@ -187,6 +187,7 @@ int CameraProxy::processCaptureRequest(camera3_capture_request_t *request) void CameraProxy::threadRpcCall(ThreadRpc &rpcRequest) { - cameraDevice_->invokeMethod(&CameraDevice::call, &rpcRequest); + cameraDevice_->invokeMethod(&CameraDevice::call, ConnectionTypeQueued, + &rpcRequest); rpcRequest.waitDelivery(); } diff --git a/src/libcamera/event_notifier.cpp b/src/libcamera/event_notifier.cpp index 687969b0..4326b0b4 100644 --- a/src/libcamera/event_notifier.cpp +++ b/src/libcamera/event_notifier.cpp @@ -128,7 +128,8 @@ void EventNotifier::message(Message *msg) if (msg->type() == Message::ThreadMoveMessage) { if (enabled_) { setEnabled(false); - invokeMethod(&EventNotifier::setEnabled, true); + invokeMethod(&EventNotifier::setEnabled, + ConnectionTypeQueued, true); } } diff --git a/src/libcamera/object.cpp b/src/libcamera/object.cpp index 509b2eba..db2c6f68 100644 --- a/src/libcamera/object.cpp +++ b/src/libcamera/object.cpp @@ -139,14 +139,15 @@ void Object::message(Message *msg) } /** - * \fn void Object::invokeMethod(void (T::*func)(Args...), Args... args) + * \fn void Object::invokeMethod() * \brief Invoke a method asynchronously on an Object instance * \param[in] func The object method to invoke + * \param[in] type Connection type for method invocation * \param[in] args The method arguments * - * This method invokes the member method \a func when control returns to the - * event loop of the object's thread. The method is executed in the object's - * thread with arguments \a args. + * This method invokes the member method \a func with arguments \a args, based + * on the connection \a type. Depending on the type, the method will be called + * synchronously in the same thread or asynchronously in the object's thread. * * Arguments \a args passed by value or reference are copied, while pointers * are passed untouched. The caller shall ensure that any pointer argument diff --git a/src/libcamera/timer.cpp b/src/libcamera/timer.cpp index ddb20954..4c688832 100644 --- a/src/libcamera/timer.cpp +++ b/src/libcamera/timer.cpp @@ -170,7 +170,8 @@ void Timer::message(Message *msg) if (msg->type() == Message::ThreadMoveMessage) { if (isRunning()) { unregisterTimer(); - invokeMethod(&Timer::registerTimer); + invokeMethod(&Timer::registerTimer, + ConnectionTypeQueued); } } |