summaryrefslogtreecommitdiff
path: root/src/libcamera/object.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-01-03 22:53:09 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-01-07 22:29:35 +0200
commit3d1d2081714f316483dddf573105682910b026bc (patch)
tree36e88d9acf0e6ed35856ea0a7b9d9a9f617d6f3d /src/libcamera/object.cpp
parentb0135a1522ed4217a8deb7929fdb36276e58161b (diff)
libcamera: bound_method: Propagate method return value
Propagate the return value of the bound method all the way to the caller of activate(). The value is stored in the arguments pack for indirect invocation. As C++ doesn't allow instantiating a variable of type void, we need to specialize the template class BoundMethodPack for methods returning void. This in turn requires template specialization for the BoundMethodArgs class in order to store the return value in the pack, and for the BoundMemberMethod class to extract the return value from the pack. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src/libcamera/object.cpp')
-rw-r--r--src/libcamera/object.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/libcamera/object.cpp b/src/libcamera/object.cpp
index e76faf48..21aad565 100644
--- a/src/libcamera/object.cpp
+++ b/src/libcamera/object.cpp
@@ -143,7 +143,7 @@ void Object::message(Message *msg)
}
/**
- * \fn void Object::invokeMethod()
+ * \fn R 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
@@ -156,6 +156,10 @@ void Object::message(Message *msg)
* Arguments \a args passed by value or reference are copied, while pointers
* are passed untouched. The caller shall ensure that any pointer argument
* remains valid until the method is invoked.
+ *
+ * \return For connection types ConnectionTypeDirect and
+ * ConnectionTypeBlocking, return the return value of the invoked method. For
+ * connection type ConnectionTypeQueued, return a default-constructed R value.
*/
/**