From patchwork Mon Aug 25 11:42:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 24226 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 BF843BEFBE for ; Mon, 25 Aug 2025 11:42:49 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 486D7692F8; Mon, 25 Aug 2025 13:42:49 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="QdIwxJBJ"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id DB70B692F6 for ; Mon, 25 Aug 2025 13:42:43 +0200 (CEST) Received: from neptunite.infra.iob (unknown [IPv6:2404:7a81:160:2100:39d7:37aa:64a2:5533]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 00A2B50F1; Mon, 25 Aug 2025 13:41:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1756122101; bh=wSSMJBdlEBL4TbRooTIgPhzLl8gvws/0R+TMA7OQiFY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QdIwxJBJ7UoESIxKnYtb5KlsGlNVsV0QvGX+qduEzAehMhGUbPDu15z6WMfkf3VEM 9WMEzyKOtO+QGanqshVlexieRo5ox5ghPlAcJG110dGq3pDUEzl/+f0AnfuC6B5zaP zer1gbcYR3qPXCW7/mL0ctgOwjs4HaIkogGWaw5k= From: Paul Elder To: libcamera-devel@lists.libcamera.org Cc: Paul Elder , kieran.bingham@ideasonboard.com, stefan.klug@ideasonboard.com, barnabas.pocze@ideasonboard.com Subject: [PATCH v4 5/8] libcamera: camera_manager: Add LayerManager Date: Mon, 25 Aug 2025 20:42:07 +0900 Message-ID: <20250825114219.562831-6-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250825114219.562831-1-paul.elder@ideasonboard.com> References: <20250825114219.562831-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 --- Changes in v4: - Put LayerManager directly in CameraManager, as opposed to a unique pointer No change in v3 New in v2 --- include/libcamera/internal/camera_manager.h | 3 +++ src/libcamera/camera_manager.cpp | 1 + 2 files changed, 4 insertions(+) diff --git a/include/libcamera/internal/camera_manager.h b/include/libcamera/internal/camera_manager.h index 5dfbe1f6546c..ff4197f47acb 100644 --- a/include/libcamera/internal/camera_manager.h +++ b/include/libcamera/internal/camera_manager.h @@ -18,6 +18,7 @@ #include #include +#include "libcamera/internal/layer_manager.h" #include "libcamera/internal/process.h" namespace libcamera { @@ -39,6 +40,7 @@ public: void removeCamera(std::shared_ptr camera) LIBCAMERA_TSA_EXCLUDES(mutex_); IPAManager *ipaManager() const { return ipaManager_.get(); } + const LayerManager *layerManager() const { return &layerManager_; } protected: void run() override; @@ -65,6 +67,7 @@ private: std::unique_ptr enumerator_; std::unique_ptr ipaManager_; + LayerManager layerManager_; }; } /* namespace libcamera */ diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp index f81794bfd6fe..a2505a5a12a3 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"