[libcamera-devel] hal: Simplify thread RPC with Object::invokeMethod()

Message ID 20190812150232.1088-1-laurent.pinchart@ideasonboard.com
State Accepted
Commit 0c32433d8c742d2a52d44264c64faec2c7ac28f2
Headers show
Series
  • [libcamera-devel] hal: Simplify thread RPC with Object::invokeMethod()
Related show

Commit Message

Laurent Pinchart Aug. 12, 2019, 3:02 p.m. UTC
Replace the manual implementation of asynchronous method invocation
through a custom message with Object::invokeMethod(). This simplifies
the thread RPC implementation.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---

This patch applies on top of the "[PATCH 00/18] Object & Thread
enhancements" series.

 src/android/camera_device.cpp |  8 +-------
 src/android/camera_device.h   |  4 +++-
 src/android/camera_proxy.cpp  |  8 +++-----
 src/android/thread_rpc.cpp    | 18 +-----------------
 src/android/thread_rpc.h      | 15 ---------------
 5 files changed, 8 insertions(+), 45 deletions(-)

Comments

Niklas Söderlund Aug. 17, 2019, 3:45 p.m. UTC | #1
Hi Laurent,

Thanks for your work.

On 2019-08-12 18:02:32 +0300, Laurent Pinchart wrote:
> Replace the manual implementation of asynchronous method invocation
> through a custom message with Object::invokeMethod(). This simplifies
> the thread RPC implementation.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

I like the diffstat :-)

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

> ---
> 
> This patch applies on top of the "[PATCH 00/18] Object & Thread
> enhancements" series.
> 
>  src/android/camera_device.cpp |  8 +-------
>  src/android/camera_device.h   |  4 +++-
>  src/android/camera_proxy.cpp  |  8 +++-----
>  src/android/thread_rpc.cpp    | 18 +-----------------
>  src/android/thread_rpc.h      | 15 ---------------
>  5 files changed, 8 insertions(+), 45 deletions(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index e2c1f2a246c8..999c51e6ba4a 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -70,14 +70,8 @@ CameraDevice::~CameraDevice()
>  /*
>   * Handle RPC request received from the associated proxy.
>   */
> -void CameraDevice::message(Message *message)
> +void CameraDevice::call(ThreadRpc *rpc)
>  {
> -	if (message->type() != ThreadRpcMessage::type())
> -		return Object::message(message);
> -
> -	ThreadRpcMessage *rpcMessage = static_cast<ThreadRpcMessage *>(message);
> -	ThreadRpc *rpc = rpcMessage->rpc;
> -
>  	switch (rpc->tag) {
>  	case ThreadRpc::ProcessCaptureRequest:
>  		processCaptureRequest(rpc->request);
> diff --git a/src/android/camera_device.h b/src/android/camera_device.h
> index ac5b95c95104..4d834ceb08a5 100644
> --- a/src/android/camera_device.h
> +++ b/src/android/camera_device.h
> @@ -26,13 +26,15 @@
>  		return nullptr;		\
>  	} while(0);
>  
> +class ThreadRpc;
> +
>  class CameraDevice : public libcamera::Object
>  {
>  public:
>  	CameraDevice(unsigned int id, std::shared_ptr<libcamera::Camera> &camera);
>  	~CameraDevice();
>  
> -	void message(libcamera::Message *message);
> +	void call(ThreadRpc *rpc);
>  
>  	int open();
>  	void close();
> diff --git a/src/android/camera_proxy.cpp b/src/android/camera_proxy.cpp
> index f0cacac8025b..3eb2f9fbcffb 100644
> --- a/src/android/camera_proxy.cpp
> +++ b/src/android/camera_proxy.cpp
> @@ -9,6 +9,8 @@
>  
>  #include <system/camera_metadata.h>
>  
> +#include <libcamera/object.h>
> +
>  #include "log.h"
>  #include "message.h"
>  #include "utils.h"
> @@ -185,10 +187,6 @@ int CameraProxy::processCaptureRequest(camera3_capture_request_t *request)
>  
>  void CameraProxy::threadRpcCall(ThreadRpc &rpcRequest)
>  {
> -	std::unique_ptr<ThreadRpcMessage> message =
> -				utils::make_unique<ThreadRpcMessage>();
> -	message->rpc = &rpcRequest;
> -
> -	cameraDevice_->postMessage(std::move(message));
> +	cameraDevice_->invokeMethod(&CameraDevice::call, &rpcRequest);
>  	rpcRequest.waitDelivery();
>  }
> diff --git a/src/android/thread_rpc.cpp b/src/android/thread_rpc.cpp
> index 295a05d7c676..f57891ff56bf 100644
> --- a/src/android/thread_rpc.cpp
> +++ b/src/android/thread_rpc.cpp
> @@ -5,19 +5,11 @@
>   * thread_rpc.cpp - Inter-thread procedure call
>   */
>  
> +#include "thread.h"
>  #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()
>  {
>  	{
> @@ -32,11 +24,3 @@ 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_;
> -}
> diff --git a/src/android/thread_rpc.h b/src/android/thread_rpc.h
> index 6d8992839d0b..f577a5d9fb32 100644
> --- a/src/android/thread_rpc.h
> +++ b/src/android/thread_rpc.h
> @@ -12,9 +12,6 @@
>  
>  #include <hardware/camera3.h>
>  
> -#include "message.h"
> -#include "thread.h"
> -
>  class ThreadRpc
>  {
>  public:
> @@ -39,16 +36,4 @@ private:
>  	std::condition_variable cv_;
>  };
>  
> -class ThreadRpcMessage : public libcamera::Message
> -{
> -public:
> -	ThreadRpcMessage();
> -	ThreadRpc *rpc;
> -
> -	static Message::Type type();
> -
> -private:
> -	static libcamera::Message::Type rpcType_;
> -};
> -
>  #endif /* __ANDROID_THREAD_RPC_H__ */
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Jacopo Mondi Aug. 19, 2019, 2:44 p.m. UTC | #2
Hi Laurent,

On Sat, Aug 17, 2019 at 05:45:11PM +0200, Niklas Söderlund wrote:
> Hi Laurent,
>
> Thanks for your work.
>
> On 2019-08-12 18:02:32 +0300, Laurent Pinchart wrote:
> > Replace the manual implementation of asynchronous method invocation
> > through a custom message with Object::invokeMethod(). This simplifies
> > the thread RPC implementation.
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>

The patch itself is good, it removes quite some stuff so it's good to
go in my opinion. I'm just wondering, the current CameraProxy::threadRpcCall
implemententation basically blocks the caller until the invoked
methods has not been executed on the callee. Would it make sense to
make out of this patter an invokeMethodsSynchronous() operation?

In any case
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>

Thanks
   j


> I like the diffstat :-)
>
> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
>
> > ---
> >
> > This patch applies on top of the "[PATCH 00/18] Object & Thread
> > enhancements" series.
> >
> >  src/android/camera_device.cpp |  8 +-------
> >  src/android/camera_device.h   |  4 +++-
> >  src/android/camera_proxy.cpp  |  8 +++-----
> >  src/android/thread_rpc.cpp    | 18 +-----------------
> >  src/android/thread_rpc.h      | 15 ---------------
> >  5 files changed, 8 insertions(+), 45 deletions(-)
> >
> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> > index e2c1f2a246c8..999c51e6ba4a 100644
> > --- a/src/android/camera_device.cpp
> > +++ b/src/android/camera_device.cpp
> > @@ -70,14 +70,8 @@ CameraDevice::~CameraDevice()
> >  /*
> >   * Handle RPC request received from the associated proxy.
> >   */
> > -void CameraDevice::message(Message *message)
> > +void CameraDevice::call(ThreadRpc *rpc)
> >  {
> > -	if (message->type() != ThreadRpcMessage::type())
> > -		return Object::message(message);
> > -
> > -	ThreadRpcMessage *rpcMessage = static_cast<ThreadRpcMessage *>(message);
> > -	ThreadRpc *rpc = rpcMessage->rpc;
> > -
> >  	switch (rpc->tag) {
> >  	case ThreadRpc::ProcessCaptureRequest:
> >  		processCaptureRequest(rpc->request);
> > diff --git a/src/android/camera_device.h b/src/android/camera_device.h
> > index ac5b95c95104..4d834ceb08a5 100644
> > --- a/src/android/camera_device.h
> > +++ b/src/android/camera_device.h
> > @@ -26,13 +26,15 @@
> >  		return nullptr;		\
> >  	} while(0);
> >
> > +class ThreadRpc;
> > +
> >  class CameraDevice : public libcamera::Object
> >  {
> >  public:
> >  	CameraDevice(unsigned int id, std::shared_ptr<libcamera::Camera> &camera);
> >  	~CameraDevice();
> >
> > -	void message(libcamera::Message *message);
> > +	void call(ThreadRpc *rpc);
> >
> >  	int open();
> >  	void close();
> > diff --git a/src/android/camera_proxy.cpp b/src/android/camera_proxy.cpp
> > index f0cacac8025b..3eb2f9fbcffb 100644
> > --- a/src/android/camera_proxy.cpp
> > +++ b/src/android/camera_proxy.cpp
> > @@ -9,6 +9,8 @@
> >
> >  #include <system/camera_metadata.h>
> >
> > +#include <libcamera/object.h>
> > +
> >  #include "log.h"
> >  #include "message.h"
> >  #include "utils.h"
> > @@ -185,10 +187,6 @@ int CameraProxy::processCaptureRequest(camera3_capture_request_t *request)
> >
> >  void CameraProxy::threadRpcCall(ThreadRpc &rpcRequest)
> >  {
> > -	std::unique_ptr<ThreadRpcMessage> message =
> > -				utils::make_unique<ThreadRpcMessage>();
> > -	message->rpc = &rpcRequest;
> > -
> > -	cameraDevice_->postMessage(std::move(message));
> > +	cameraDevice_->invokeMethod(&CameraDevice::call, &rpcRequest);
> >  	rpcRequest.waitDelivery();
> >  }
> > diff --git a/src/android/thread_rpc.cpp b/src/android/thread_rpc.cpp
> > index 295a05d7c676..f57891ff56bf 100644
> > --- a/src/android/thread_rpc.cpp
> > +++ b/src/android/thread_rpc.cpp
> > @@ -5,19 +5,11 @@
> >   * thread_rpc.cpp - Inter-thread procedure call
> >   */
> >
> > +#include "thread.h"
> >  #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()
> >  {
> >  	{
> > @@ -32,11 +24,3 @@ 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_;
> > -}
> > diff --git a/src/android/thread_rpc.h b/src/android/thread_rpc.h
> > index 6d8992839d0b..f577a5d9fb32 100644
> > --- a/src/android/thread_rpc.h
> > +++ b/src/android/thread_rpc.h
> > @@ -12,9 +12,6 @@
> >
> >  #include <hardware/camera3.h>
> >
> > -#include "message.h"
> > -#include "thread.h"
> > -
> >  class ThreadRpc
> >  {
> >  public:
> > @@ -39,16 +36,4 @@ private:
> >  	std::condition_variable cv_;
> >  };
> >
> > -class ThreadRpcMessage : public libcamera::Message
> > -{
> > -public:
> > -	ThreadRpcMessage();
> > -	ThreadRpc *rpc;
> > -
> > -	static Message::Type type();
> > -
> > -private:
> > -	static libcamera::Message::Type rpcType_;
> > -};
> > -
> >  #endif /* __ANDROID_THREAD_RPC_H__ */
> > --
> > Regards,
> >
> > Laurent Pinchart
> >
> > _______________________________________________
> > libcamera-devel mailing list
> > libcamera-devel@lists.libcamera.org
> > https://lists.libcamera.org/listinfo/libcamera-devel
>
> --
> Regards,
> Niklas Söderlund
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Laurent Pinchart Aug. 19, 2019, 3:01 p.m. UTC | #3
Hi Jacopo,

On Mon, Aug 19, 2019 at 04:44:38PM +0200, Jacopo Mondi wrote:
> On Sat, Aug 17, 2019 at 05:45:11PM +0200, Niklas Söderlund wrote:
> > On 2019-08-12 18:02:32 +0300, Laurent Pinchart wrote:
> >> Replace the manual implementation of asynchronous method invocation
> >> through a custom message with Object::invokeMethod(). This simplifies
> >> the thread RPC implementation.
> >>
> >> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> 
> The patch itself is good, it removes quite some stuff so it's good to
> go in my opinion. I'm just wondering, the current CameraProxy::threadRpcCall
> implemententation basically blocks the caller until the invoked
> methods has not been executed on the callee. Would it make sense to
> make out of this patter an invokeMethodsSynchronous() operation?

It's on my todo list :-) I'm thinking of adding an argument to
invokeMethod() (as well to Signal::emit()) to select whether the method
or slots should be called immediately (synchronously in the same
thread), through the message queue, through the message queue with a
synchronous wait, or determine the behaviour automatically depending on
the thread of the caller and callee.

> In any case
> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
> 
> > I like the diffstat :-)
> >
> > Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
> >
> >> ---
> >>
> >> This patch applies on top of the "[PATCH 00/18] Object & Thread
> >> enhancements" series.
> >>
> >>  src/android/camera_device.cpp |  8 +-------
> >>  src/android/camera_device.h   |  4 +++-
> >>  src/android/camera_proxy.cpp  |  8 +++-----
> >>  src/android/thread_rpc.cpp    | 18 +-----------------
> >>  src/android/thread_rpc.h      | 15 ---------------
> >>  5 files changed, 8 insertions(+), 45 deletions(-)
> >>
> >> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> >> index e2c1f2a246c8..999c51e6ba4a 100644
> >> --- a/src/android/camera_device.cpp
> >> +++ b/src/android/camera_device.cpp
> >> @@ -70,14 +70,8 @@ CameraDevice::~CameraDevice()
> >>  /*
> >>   * Handle RPC request received from the associated proxy.
> >>   */
> >> -void CameraDevice::message(Message *message)
> >> +void CameraDevice::call(ThreadRpc *rpc)
> >>  {
> >> -	if (message->type() != ThreadRpcMessage::type())
> >> -		return Object::message(message);
> >> -
> >> -	ThreadRpcMessage *rpcMessage = static_cast<ThreadRpcMessage *>(message);
> >> -	ThreadRpc *rpc = rpcMessage->rpc;
> >> -
> >>  	switch (rpc->tag) {
> >>  	case ThreadRpc::ProcessCaptureRequest:
> >>  		processCaptureRequest(rpc->request);
> >> diff --git a/src/android/camera_device.h b/src/android/camera_device.h
> >> index ac5b95c95104..4d834ceb08a5 100644
> >> --- a/src/android/camera_device.h
> >> +++ b/src/android/camera_device.h
> >> @@ -26,13 +26,15 @@
> >>  		return nullptr;		\
> >>  	} while(0);
> >>
> >> +class ThreadRpc;
> >> +
> >>  class CameraDevice : public libcamera::Object
> >>  {
> >>  public:
> >>  	CameraDevice(unsigned int id, std::shared_ptr<libcamera::Camera> &camera);
> >>  	~CameraDevice();
> >>
> >> -	void message(libcamera::Message *message);
> >> +	void call(ThreadRpc *rpc);
> >>
> >>  	int open();
> >>  	void close();
> >> diff --git a/src/android/camera_proxy.cpp b/src/android/camera_proxy.cpp
> >> index f0cacac8025b..3eb2f9fbcffb 100644
> >> --- a/src/android/camera_proxy.cpp
> >> +++ b/src/android/camera_proxy.cpp
> >> @@ -9,6 +9,8 @@
> >>
> >>  #include <system/camera_metadata.h>
> >>
> >> +#include <libcamera/object.h>
> >> +
> >>  #include "log.h"
> >>  #include "message.h"
> >>  #include "utils.h"
> >> @@ -185,10 +187,6 @@ int CameraProxy::processCaptureRequest(camera3_capture_request_t *request)
> >>
> >>  void CameraProxy::threadRpcCall(ThreadRpc &rpcRequest)
> >>  {
> >> -	std::unique_ptr<ThreadRpcMessage> message =
> >> -				utils::make_unique<ThreadRpcMessage>();
> >> -	message->rpc = &rpcRequest;
> >> -
> >> -	cameraDevice_->postMessage(std::move(message));
> >> +	cameraDevice_->invokeMethod(&CameraDevice::call, &rpcRequest);
> >>  	rpcRequest.waitDelivery();
> >>  }
> >> diff --git a/src/android/thread_rpc.cpp b/src/android/thread_rpc.cpp
> >> index 295a05d7c676..f57891ff56bf 100644
> >> --- a/src/android/thread_rpc.cpp
> >> +++ b/src/android/thread_rpc.cpp
> >> @@ -5,19 +5,11 @@
> >>   * thread_rpc.cpp - Inter-thread procedure call
> >>   */
> >>
> >> +#include "thread.h"
> >>  #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()
> >>  {
> >>  	{
> >> @@ -32,11 +24,3 @@ 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_;
> >> -}
> >> diff --git a/src/android/thread_rpc.h b/src/android/thread_rpc.h
> >> index 6d8992839d0b..f577a5d9fb32 100644
> >> --- a/src/android/thread_rpc.h
> >> +++ b/src/android/thread_rpc.h
> >> @@ -12,9 +12,6 @@
> >>
> >>  #include <hardware/camera3.h>
> >>
> >> -#include "message.h"
> >> -#include "thread.h"
> >> -
> >>  class ThreadRpc
> >>  {
> >>  public:
> >> @@ -39,16 +36,4 @@ private:
> >>  	std::condition_variable cv_;
> >>  };
> >>
> >> -class ThreadRpcMessage : public libcamera::Message
> >> -{
> >> -public:
> >> -	ThreadRpcMessage();
> >> -	ThreadRpc *rpc;
> >> -
> >> -	static Message::Type type();
> >> -
> >> -private:
> >> -	static libcamera::Message::Type rpcType_;
> >> -};
> >> -
> >>  #endif /* __ANDROID_THREAD_RPC_H__ */

Patch

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index e2c1f2a246c8..999c51e6ba4a 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -70,14 +70,8 @@  CameraDevice::~CameraDevice()
 /*
  * Handle RPC request received from the associated proxy.
  */
-void CameraDevice::message(Message *message)
+void CameraDevice::call(ThreadRpc *rpc)
 {
-	if (message->type() != ThreadRpcMessage::type())
-		return Object::message(message);
-
-	ThreadRpcMessage *rpcMessage = static_cast<ThreadRpcMessage *>(message);
-	ThreadRpc *rpc = rpcMessage->rpc;
-
 	switch (rpc->tag) {
 	case ThreadRpc::ProcessCaptureRequest:
 		processCaptureRequest(rpc->request);
diff --git a/src/android/camera_device.h b/src/android/camera_device.h
index ac5b95c95104..4d834ceb08a5 100644
--- a/src/android/camera_device.h
+++ b/src/android/camera_device.h
@@ -26,13 +26,15 @@ 
 		return nullptr;		\
 	} while(0);
 
+class ThreadRpc;
+
 class CameraDevice : public libcamera::Object
 {
 public:
 	CameraDevice(unsigned int id, std::shared_ptr<libcamera::Camera> &camera);
 	~CameraDevice();
 
-	void message(libcamera::Message *message);
+	void call(ThreadRpc *rpc);
 
 	int open();
 	void close();
diff --git a/src/android/camera_proxy.cpp b/src/android/camera_proxy.cpp
index f0cacac8025b..3eb2f9fbcffb 100644
--- a/src/android/camera_proxy.cpp
+++ b/src/android/camera_proxy.cpp
@@ -9,6 +9,8 @@ 
 
 #include <system/camera_metadata.h>
 
+#include <libcamera/object.h>
+
 #include "log.h"
 #include "message.h"
 #include "utils.h"
@@ -185,10 +187,6 @@  int CameraProxy::processCaptureRequest(camera3_capture_request_t *request)
 
 void CameraProxy::threadRpcCall(ThreadRpc &rpcRequest)
 {
-	std::unique_ptr<ThreadRpcMessage> message =
-				utils::make_unique<ThreadRpcMessage>();
-	message->rpc = &rpcRequest;
-
-	cameraDevice_->postMessage(std::move(message));
+	cameraDevice_->invokeMethod(&CameraDevice::call, &rpcRequest);
 	rpcRequest.waitDelivery();
 }
diff --git a/src/android/thread_rpc.cpp b/src/android/thread_rpc.cpp
index 295a05d7c676..f57891ff56bf 100644
--- a/src/android/thread_rpc.cpp
+++ b/src/android/thread_rpc.cpp
@@ -5,19 +5,11 @@ 
  * thread_rpc.cpp - Inter-thread procedure call
  */
 
+#include "thread.h"
 #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()
 {
 	{
@@ -32,11 +24,3 @@  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_;
-}
diff --git a/src/android/thread_rpc.h b/src/android/thread_rpc.h
index 6d8992839d0b..f577a5d9fb32 100644
--- a/src/android/thread_rpc.h
+++ b/src/android/thread_rpc.h
@@ -12,9 +12,6 @@ 
 
 #include <hardware/camera3.h>
 
-#include "message.h"
-#include "thread.h"
-
 class ThreadRpc
 {
 public:
@@ -39,16 +36,4 @@  private:
 	std::condition_variable cv_;
 };
 
-class ThreadRpcMessage : public libcamera::Message
-{
-public:
-	ThreadRpcMessage();
-	ThreadRpc *rpc;
-
-	static Message::Type type();
-
-private:
-	static libcamera::Message::Type rpcType_;
-};
-
 #endif /* __ANDROID_THREAD_RPC_H__ */