From patchwork Thu Jan 29 08:28:11 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 26033 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 7D804C3226 for ; Thu, 29 Jan 2026 08:28:39 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 19B7461FE7; Thu, 29 Jan 2026 09:28:39 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="N7OVdDBi"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 02CF061FDB for ; Thu, 29 Jan 2026 09:28:34 +0100 (CET) Received: from neptunite.flets-east.jp (unknown [IPv6:2404:7a81:160:2100:2eea:f891:1bd7:2691]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 45CD42818; Thu, 29 Jan 2026 09:27:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1769675276; bh=Y5dUEdVs4XHM52NVYwyQiWrLEBJTA53ojcN3Hb6+R/8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=N7OVdDBiGvwodlDyxr1EfEr6k65mEnrpmLvgh6xh/TiAOryW0QxUGIPtwLRa5E6Nd 1gEO5vVSWSe4HKXd7tN/mcXAr7t0sBk6HwbFXwt3xfDztsaR3b5CuLNn7A/etnfjuN 6oFShpbdNw+Joj5JAsr74dZRfCarZ6LY26w6pM1s= From: Paul Elder To: libcamera-devel@lists.libcamera.org Cc: Paul Elder , Kieran Bingham Subject: [PATCH v6 5/8] libcamera: camera_manager: Add LayerManager Date: Thu, 29 Jan 2026 17:28:11 +0900 Message-ID: <20260129082814.1777779-6-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20260129082814.1777779-1-paul.elder@ideasonboard.com> References: <20260129082814.1777779-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 through the CameraManager. Signed-off-by: Paul Elder Reviewed-by: Kieran Bingham --- No change in v6 No change in v5 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 755928ce60a5..cc3ede02507f 100644 --- a/include/libcamera/internal/camera_manager.h +++ b/include/libcamera/internal/camera_manager.h @@ -19,6 +19,7 @@ #include #include "libcamera/internal/global_configuration.h" +#include "libcamera/internal/layer_manager.h" #include "libcamera/internal/process.h" namespace libcamera { @@ -45,6 +46,7 @@ public: } IPAManager *ipaManager() const { return ipaManager_.get(); } + const LayerManager *layerManager() const { return &layerManager_; } protected: void run() override; @@ -71,6 +73,7 @@ private: std::unique_ptr enumerator_; std::unique_ptr ipaManager_; + LayerManager layerManager_; const GlobalConfiguration configuration_; }; diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp index 23185467ba02..554cd935339a 100644 --- a/src/libcamera/camera_manager.cpp +++ b/src/libcamera/camera_manager.cpp @@ -16,6 +16,7 @@ #include "libcamera/internal/camera.h" #include "libcamera/internal/device_enumerator.h" #include "libcamera/internal/global_configuration.h" +#include "libcamera/internal/layer_manager.h" #include "libcamera/internal/ipa_manager.h" #include "libcamera/internal/pipeline_handler.h"