[{"id":21393,"web_url":"https://patchwork.libcamera.org/comment/21393/","msgid":"<YaWjJaVPc5QzM8D4@pendragon.ideasonboard.com>","date":"2021-11-30T04:05:57","subject":"Re: [libcamera-devel] [PATCH v2 02/11] android: Consolidate mutex\n\tclasses to Mutex and MutexLocker","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Hiro,\n\nThank you for the patch.\n\nOn Mon, Nov 29, 2021 at 08:44:44PM +0900, Hirokazu Honda wrote:\n> std::mutex and std::unique_lcok are used in android directories,\n> mixing Mutex and MutexLocker. This consolidates them to Mutex\n> and MutexLocker.\n> \n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/android/camera_hal_manager.h |  6 ++----\n>  src/android/camera_request.h     |  4 ++--\n>  src/android/camera_stream.cpp    | 12 ++++++------\n>  src/android/camera_stream.h      |  2 +-\n>  4 files changed, 11 insertions(+), 13 deletions(-)\n> \n> diff --git a/src/android/camera_hal_manager.h b/src/android/camera_hal_manager.h\n> index 192f2fc5..c07684a1 100644\n> --- a/src/android/camera_hal_manager.h\n> +++ b/src/android/camera_hal_manager.h\n> @@ -18,6 +18,7 @@\n>  #include <system/camera_metadata.h>\n>  \n>  #include <libcamera/base/class.h>\n> +#include <libcamera/base/thread.h>\n>  \n>  #include <libcamera/camera_manager.h>\n>  \n> @@ -44,9 +45,6 @@ public:\n>  private:\n>  \tLIBCAMERA_DISABLE_COPY_AND_MOVE(CameraHalManager)\n>  \n> -\tusing Mutex = std::mutex;\n> -\tusing MutexLocker = std::unique_lock<std::mutex>;\n> -\n>  \tstatic constexpr unsigned int firstExternalCameraId_ = 1000;\n>  \n>  \tCameraHalManager();\n> @@ -64,7 +62,7 @@ private:\n>  \tconst camera_module_callbacks_t *callbacks_;\n>  \tstd::vector<std::unique_ptr<CameraDevice>> cameras_;\n>  \tstd::map<std::string, unsigned int> cameraIdsMap_;\n> -\tMutex mutex_;\n> +\tlibcamera::Mutex mutex_;\n>  \n>  \tunsigned int numInternalCameras_;\n>  \tunsigned int nextExternalCameraId_;\n> diff --git a/src/android/camera_request.h b/src/android/camera_request.h\n> index f3cb6d64..88d501a8 100644\n> --- a/src/android/camera_request.h\n> +++ b/src/android/camera_request.h\n> @@ -9,10 +9,10 @@\n>  \n>  #include <map>\n>  #include <memory>\n> -#include <mutex>\n>  #include <vector>\n>  \n>  #include <libcamera/base/class.h>\n> +#include <libcamera/base/thread.h>\n>  \n>  #include <libcamera/camera.h>\n>  #include <libcamera/framebuffer.h>\n> @@ -58,7 +58,7 @@ public:\n>  \n>  \t/* Keeps track of streams requiring post-processing. */\n>  \tstd::map<CameraStream *, StreamBuffer *> pendingStreamsToProcess_;\n> -\tstd::mutex streamsProcessMutex_;\n> +\tlibcamera::Mutex streamsProcessMutex_;\n>  \n>  \tCamera3RequestDescriptor(libcamera::Camera *camera,\n>  \t\t\t\t const camera3_capture_request_t *camera3Request);\n> diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp\n> index 9023c13c..5a62b7cd 100644\n> --- a/src/android/camera_stream.cpp\n> +++ b/src/android/camera_stream.cpp\n> @@ -119,7 +119,7 @@ int CameraStream::configure()\n>  \n>  \tif (type_ == Type::Internal) {\n>  \t\tallocator_ = std::make_unique<FrameBufferAllocator>(cameraDevice_->camera());\n> -\t\tmutex_ = std::make_unique<std::mutex>();\n> +\t\tmutex_ = std::make_unique<Mutex>();\n>  \n>  \t\tint ret = allocator_->allocate(stream());\n>  \t\tif (ret < 0)\n> @@ -208,7 +208,7 @@ FrameBuffer *CameraStream::getBuffer()\n>  \tif (!allocator_)\n>  \t\treturn nullptr;\n>  \n> -\tstd::lock_guard<std::mutex> locker(*mutex_);\n> +\tMutexLocker locker(*mutex_);\n>  \n>  \tif (buffers_.empty()) {\n>  \t\tLOG(HAL, Error) << \"Buffer underrun\";\n> @@ -226,7 +226,7 @@ void CameraStream::putBuffer(FrameBuffer *buffer)\n>  \tif (!allocator_)\n>  \t\treturn;\n>  \n> -\tstd::lock_guard<std::mutex> locker(*mutex_);\n> +\tMutexLocker locker(*mutex_);\n>  \n>  \tbuffers_.push_back(buffer);\n>  }\n> @@ -239,7 +239,7 @@ CameraStream::PostProcessorWorker::PostProcessorWorker(PostProcessor *postProces\n>  CameraStream::PostProcessorWorker::~PostProcessorWorker()\n>  {\n>  \t{\n> -\t\tlibcamera::MutexLocker lock(mutex_);\n> +\t\tMutexLocker lock(mutex_);\n>  \t\tstate_ = State::Stopped;\n>  \t}\n>  \n> @@ -250,7 +250,7 @@ CameraStream::PostProcessorWorker::~PostProcessorWorker()\n>  void CameraStream::PostProcessorWorker::start()\n>  {\n>  \t{\n> -\t\tlibcamera::MutexLocker lock(mutex_);\n> +\t\tMutexLocker lock(mutex_);\n>  \t\tASSERT(state_ != State::Running);\n>  \t\tstate_ = State::Running;\n>  \t}\n> @@ -308,7 +308,7 @@ void CameraStream::PostProcessorWorker::run()\n>  \n>  void CameraStream::PostProcessorWorker::flush()\n>  {\n> -\tlibcamera::MutexLocker lock(mutex_);\n> +\tMutexLocker lock(mutex_);\n>  \tstate_ = State::Flushing;\n>  \tlock.unlock();\n>  \n> diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h\n> index e4808369..c127a0e4 100644\n> --- a/src/android/camera_stream.h\n> +++ b/src/android/camera_stream.h\n> @@ -173,7 +173,7 @@ private:\n>  \t * The class has to be MoveConstructible as instances are stored in\n>  \t * an std::vector in CameraDevice.\n>  \t */\n> -\tstd::unique_ptr<std::mutex> mutex_;\n> +\tstd::unique_ptr<libcamera::Mutex> mutex_;\n>  \tstd::unique_ptr<PostProcessor> postProcessor_;\n>  \n>  \tstd::unique_ptr<PostProcessorWorker> worker_;","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 180A6BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 30 Nov 2021 04:06:24 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CA323604FC;\n\tTue, 30 Nov 2021 05:06:23 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4E4AA604FC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 30 Nov 2021 05:06:22 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DB1738F0;\n\tTue, 30 Nov 2021 05:06:21 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"aC/19KXB\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1638245182;\n\tbh=1MJQ+/VN0XRTyRfVUlOS+8VTGIEeEPaalW0U78uHCFY=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=aC/19KXBmWAtSqpdIPvyug2f3pVl5zC98MQNEvUmoT8FwCvH6vGHJ9ApCJH5zOKiG\n\t8mdPhbYThq/dKEE/iqwq+9beHNeQvBhd1KDqlWkh8cK/eQw/2keUonSjlz6EYfYBJP\n\toCOOMfUBiRxClA6PPmJgzFXUo3X4s1hG9xdE/rKk=","Date":"Tue, 30 Nov 2021 06:05:57 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<YaWjJaVPc5QzM8D4@pendragon.ideasonboard.com>","References":"<20211129114453.3186042-1-hiroh@chromium.org>\n\t<20211129114453.3186042-3-hiroh@chromium.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20211129114453.3186042-3-hiroh@chromium.org>","Subject":"Re: [libcamera-devel] [PATCH v2 02/11] android: Consolidate mutex\n\tclasses to Mutex and MutexLocker","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]