From patchwork Mon Jul 28 11:55:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 24002 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 18FEABDCC1 for ; Mon, 28 Jul 2025 11:56:22 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id C1D4D69169; Mon, 28 Jul 2025 13:56:21 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="nsEDtY+9"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id BFF1D6917D for ; Mon, 28 Jul 2025 13:56:17 +0200 (CEST) Received: from neptunite.hamster-moth.ts.net (unknown [IPv6:2404:7a81:160:2100:5715:34ad:7742:5049]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 0FA9F379; Mon, 28 Jul 2025 13:55:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1753703735; bh=KbTGBggUum9YYxgSW12acluXGM13YWoIy44mw9qHWns=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nsEDtY+9x+eWwMpL6LMgC2LWkXwamVjoJnbJq2cq0YO2+cqFgsg6xzJC7YiEkoIsc wklEM8LOInUmrWo1wvoJgshYn166KlAYsa/gZ0lxOLeVjnoKj+X9hv94nYw7ZAjQOF xAmbCv0n5HRebei0UyE5apdsawWXRuBNc26RktKo= From: Paul Elder To: libcamera-devel@lists.libcamera.org Cc: Paul Elder , kieran.bingham@ideasonboard.com, barnabas.pocze@ideasonboard.com Subject: [PATCH v3 5/8] libcamera: camera_manager: Add LayerManager Date: Mon, 28 Jul 2025 20:55:52 +0900 Message-ID: <20250728115556.2886082-6-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250728115556.2886082-1-paul.elder@ideasonboard.com> References: <20250728115556.2886082-1-paul.elder@ideasonboard.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Add to the CameraManager a LayerManager member. This allows us to have one LayerManager that handles loading all the layer shared objects, and then each Camera can access the layer via the LayerManager via through the CameraManager. Signed-off-by: Paul Elder Reviewed-by: Kieran Bingham --- New in v2 --- include/libcamera/internal/camera_manager.h | 3 +++ src/libcamera/camera_manager.cpp | 2 ++ 2 files changed, 5 insertions(+) diff --git a/include/libcamera/internal/camera_manager.h b/include/libcamera/internal/camera_manager.h index 0150ca61f7de..ef5b0688de23 100644 --- a/include/libcamera/internal/camera_manager.h +++ b/include/libcamera/internal/camera_manager.h @@ -25,6 +25,7 @@ namespace libcamera { class Camera; class DeviceEnumerator; class IPAManager; +class LayerManager; class PipelineHandlerFactoryBase; class CameraManager::Private : public Extensible::Private, public Thread @@ -39,6 +40,7 @@ public: void removeCamera(std::shared_ptr camera) LIBCAMERA_TSA_EXCLUDES(mutex_); IPAManager *ipaManager() const { return ipaManager_.get(); } + LayerManager *layerManager() const { return layerManager_.get(); } protected: void run() override; @@ -66,6 +68,7 @@ private: std::unique_ptr ipaManager_; ProcessManager processManager_; + std::unique_ptr layerManager_; }; } /* namespace libcamera */ diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp index f81794bfd6fe..35c8ed036502 100644 --- a/src/libcamera/camera_manager.cpp +++ b/src/libcamera/camera_manager.cpp @@ -15,6 +15,7 @@ #include "libcamera/internal/camera.h" #include "libcamera/internal/device_enumerator.h" +#include "libcamera/internal/layer_manager.h" #include "libcamera/internal/ipa_manager.h" #include "libcamera/internal/pipeline_handler.h" @@ -41,6 +42,7 @@ CameraManager::Private::Private() : initialized_(false) { ipaManager_ = std::make_unique(); + layerManager_ = std::make_unique(); } int CameraManager::Private::start()