From patchwork Tue Dec 2 14:49:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 25340 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 0C1D5BD80A for ; Tue, 2 Dec 2025 14:49:45 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 0649660C92; Tue, 2 Dec 2025 15:49:44 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="NTQw+vM3"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A2BDC60C92 for ; Tue, 2 Dec 2025 15:49:36 +0100 (CET) Received: from [192.168.1.104] (net-93-65-100-155.cust.vodafonedsl.it [93.65.100.155]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 6907B6DC; Tue, 2 Dec 2025 15:47:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1764686842; bh=IkgEXBKlqck2eAqwvx7gGB84F3eYcFxd62i3UJZmIjM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NTQw+vM3QY19fMJ15XGnbBpZfTzX9uR5Kix2aEJMZNsJkGGrJTP8OJDT4zsO+f9Zm fF3qOmZXnNSqSsfZhhThmtHGZL2hEWhX/Ak+CCEQ5afi8lL2j9dYOoMyQrSGa3ba1C MXog81IAospwhMJJ7/3QMm24KSG0zrxLZZcpiEg4= From: Jacopo Mondi Date: Tue, 02 Dec 2025 15:49:28 +0100 Subject: [PATCH v3 3/5] libcamera: request: Make metadata_ a class instance MIME-Version: 1.0 Message-Id: <20251202-cam-control-override-v3-3-eacab052798d@ideasonboard.com> References: <20251202-cam-control-override-v3-0-eacab052798d@ideasonboard.com> In-Reply-To: <20251202-cam-control-override-v3-0-eacab052798d@ideasonboard.com> To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , =?utf-8?b?QmFybmFiw6Fz?= =?utf-8?q?_P=C5=91cze?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2423; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=IkgEXBKlqck2eAqwvx7gGB84F3eYcFxd62i3UJZmIjM=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBpLvx+rHcDF6RCevOHDUQFHswt8NlAM+YHzqgmE 0prkf+NDPeJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCaS78fgAKCRByNAaPFqFW PItsD/9s/LyhnTQvBKqq+vwN+EU3jJAkxelhOn3TdXbXpk6AKwUWJ9Vo97vR5LH7VhegVqRMI/M uPE5tpA78YzDljh2XdMLt9sUtmYvunWaEiuJ6HwNzc8iEeGbWyYg/0Ssz063XkGXwVMifyjZg9t bCdm/K+gB2pXAyyKme4gU3N/jW4Py/ufRya0iQTNzSlOEs6Mv4w0aZES09yBwlFfkWUNfrSCU3N TwmOj30ovwrmmr3RP+fzYuzhxcpdVSKTXxP1EM4DPND+EqyGy9PdvzRR8yFGxlZ93tfLrB4SXtB aF0Kelx0dUK3AUk2yoJdUsPcxsKOKfpSTH/1ZN0pMIvxdX+u5ttPjaIkwKzm2Y5Yan1/qaoovVq d0nQ9qjKryv6nyaoy3ptaXc23TB4rUYY3jWjTswqAy+zCpNvrlIksfZwZU2b0dCm1ehFB5ytacC wOIvfeqBde7qp41XEqgxxES91S+umlv4HgvNGTaaAzc3Io8GmILg57n1gDyb1uCTNoZdfBF3Cet eUS5f6Zr+KMa2bwk33CkdIBZMnSLF7yM5LPYL+rvxMumSuKd8YuKqyCnr3aN5EKs5tf1DSutHRX 7X12cYEsEpb570EzFLZZY0C2gmqsxQxfistHzBQ7erDQnsRE8HKIWZysKrg/jHE/zoIyLJBgWJm LnCDEWZdIErvYpg== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B 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" The metadata_ member variable is a pointer, for no specific reason. Make it an instance and simplify the class destructor. Suggested-by: Barnabás Pőcze Signed-off-by: Jacopo Mondi Reviewed-by: Barnabás Pőcze --- include/libcamera/internal/request.h | 4 ++-- src/libcamera/request.cpp | 13 +++++-------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/include/libcamera/internal/request.h b/include/libcamera/internal/request.h index 643f67cabf5778f7515c0117d06d4e0a3fdec4f8..693097ee9a263be5b4217d5e5393ea93cc30a239 100644 --- a/include/libcamera/internal/request.h +++ b/include/libcamera/internal/request.h @@ -36,7 +36,7 @@ public: Camera *camera() const { return camera_; } bool hasPendingBuffers() const; - ControlList &metadata() { return *metadata_; } + ControlList &metadata() { return metadata_; } bool completeBuffer(FrameBuffer *buffer); void complete(); @@ -63,7 +63,7 @@ private: std::unordered_set pending_; std::map notifiers_; std::unique_ptr timer_; - ControlList *metadata_; + ControlList metadata_; }; } /* namespace libcamera */ diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp index a661b2f5c8ae9ae2bcbab2dcdceeef7dcb8d0930..0d6c4a0ce9aec5f328c1f66cea43abb37c82544a 100644 --- a/src/libcamera/request.cpp +++ b/src/libcamera/request.cpp @@ -53,20 +53,17 @@ LOG_DEFINE_CATEGORY(Request) /** * \brief Create a Request::Private * \param camera The Camera that creates the request + * + * \todo Add a validator for metadata controls. */ Request::Private::Private(Camera *camera) - : camera_(camera), cancelled_(false) + : camera_(camera), cancelled_(false), metadata_(controls::controls) { - /** - * \todo Add a validator for metadata controls. - */ - metadata_ = new ControlList(controls::controls); } Request::Private::~Private() { doCancelRequest(); - delete metadata_; } /** @@ -410,7 +407,7 @@ void Request::reuse(ReuseFlag flags) status_ = RequestPending; controls_->clear(); - _d()->metadata_->clear(); + _d()->metadata_.clear(); } /** @@ -435,7 +432,7 @@ void Request::reuse(ReuseFlag flags) */ const ControlList &Request::metadata() const { - return *_d()->metadata_; + return _d()->metadata_; } /**