summaryrefslogtreecommitdiff
path: root/src/android/thread_rpc.cpp
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2019-05-10 17:40:02 +0200
committerJacopo Mondi <jacopo@jmondi.org>2019-08-12 11:55:46 +0200
commit667d8ea8fd4bda35e8888792d2b6c055fdb4be18 (patch)
tree786462c9f8dfce3d3d05d69dc8befcd67e94db07 /src/android/thread_rpc.cpp
parent6bed34da161bb8c4e86821116dcff2205e29c58a (diff)
android: hal: Add Camera3 HAL
Add libcamera Android Camera HALv3 implementation. The initial camera HAL implementation supports the LIMITED hardware level and uses statically defined metadata and camera characteristics. Add a build option named 'android' and adjust the build system to selectively compile the Android camera HAL and link it against the required Android libraries. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/android/thread_rpc.cpp')
-rw-r--r--src/android/thread_rpc.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/android/thread_rpc.cpp b/src/android/thread_rpc.cpp
new file mode 100644
index 00000000..295a05d7
--- /dev/null
+++ b/src/android/thread_rpc.cpp
@@ -0,0 +1,42 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * thread_rpc.cpp - Inter-thread procedure call
+ */
+
+#include "thread_rpc.h"
+
+#include "message.h"
+
+using namespace libcamera;
+
+libcamera::Message::Type ThreadRpcMessage::rpcType_ = Message::Type::None;
+
+ThreadRpcMessage::ThreadRpcMessage()
+ : Message(type())
+{
+}
+
+void ThreadRpc::notifyReception()
+{
+ {
+ libcamera::MutexLocker locker(mutex_);
+ delivered_ = true;
+ }
+ cv_.notify_one();
+}
+
+void ThreadRpc::waitDelivery()
+{
+ libcamera::MutexLocker locker(mutex_);
+ cv_.wait(locker, [&] { return delivered_; });
+}
+
+Message::Type ThreadRpcMessage::type()
+{
+ if (ThreadRpcMessage::rpcType_ == Message::Type::None)
+ rpcType_ = Message::registerMessageType();
+
+ return rpcType_;
+}