From patchwork Thu Jun 15 22:51:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kieran Bingham X-Patchwork-Id: 18746 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 E7F23C3291 for ; Thu, 15 Jun 2023 22:51:42 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 685F4628BF; Fri, 16 Jun 2023 00:51:41 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1686869501; bh=u0VtxUzjd5KFs2j8GKqK87c38rLuZUafIGVKUrM3QOc=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=DhQge2RK7QFXTBK8YnyHMKOZe0gOEnlFipazoUapmghnOwESLVPLbUVT0NP+Y0BVC wkcPEKusqpQ0fqkWJbvlMzxbEfHRHzSQZF5KJXZZhEBA2E1vhuqfMXz0J26i9alVjM Zw91IslAOsmVbJS5lhGaIPORgRg6fBTU1PbLpKK/CcYKEYPTeL0YmiWkQfdUHnpkn7 kYHkbIy43le64HZEJevoQcjFRxVziN7Jx4Yx7B2B2slodX7Oo8vK5Rkgc2MvNaNMVl eylPxn+/6PGFdjjrfMbJXcEq6sv/hzh4gKTILbACZZR1YZyrxLioqWQoT2xgOztbsH OCEtyRHZxzA6g== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4489F61E4A for ; Fri, 16 Jun 2023 00:51:38 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="PhKUKPlw"; dkim-atps=neutral Received: from Monstersaurus.local (aztw-30-b2-v4wan-166917-cust845.vm26.cable.virginm.net [82.37.23.78]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 84082D9B; Fri, 16 Jun 2023 00:51:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1686869466; bh=u0VtxUzjd5KFs2j8GKqK87c38rLuZUafIGVKUrM3QOc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PhKUKPlwywQ1a4jfa5Jta481rY7dAmID5sQBG1dNgK6NcT8I8DPdIqAX8h/Wx/CfA D/ikyARyXiBbkEuPWKwAJlDW9vijqiljs4YKnl25DwqJw/cdSvQbXujM8KemJ/imPs LeCL4GB63mwGdElSjDzKHbCijzm6emOo2Lb1T5PA= To: libcamera devel Date: Thu, 15 Jun 2023 23:51:33 +0100 Message-Id: <20230615225133.622612-3-kieran.bingham@ideasonboard.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230615225133.622612-1-kieran.bingham@ideasonboard.com> References: <20230615225133.622612-1-kieran.bingham@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 2/2] libcamera: CameraManager: Remove ::get(dev_t) 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: , X-Patchwork-Original-From: Kieran Bingham via libcamera-devel From: Kieran Bingham Reply-To: Kieran Bingham Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The CameraManager::get(dev_t) implementation was provided only for the V4L2 Adaptation layer. This has now been replaced with the use of the public SystemDevices property. Remove the deprecated function entirely, along with the camerasByDevnum_ map which was only used to support this functionality. This is a clear (and intentional) breakage in both the API and ABI. Signed-off-by: Kieran Bingham Reviewed-by: Laurent Pinchart --- include/libcamera/camera_manager.h | 1 - include/libcamera/internal/camera_manager.h | 3 +- src/libcamera/camera_manager.cpp | 42 --------------------- 3 files changed, 1 insertion(+), 45 deletions(-) diff --git a/include/libcamera/camera_manager.h b/include/libcamera/camera_manager.h index 9767acc42c89..1a891cacf26a 100644 --- a/include/libcamera/camera_manager.h +++ b/include/libcamera/camera_manager.h @@ -32,7 +32,6 @@ public: std::vector> cameras() const; std::shared_ptr get(const std::string &id); - std::shared_ptr get(dev_t devnum); static const std::string &version() { return version_; } diff --git a/include/libcamera/internal/camera_manager.h b/include/libcamera/internal/camera_manager.h index cdf009a9c626..2aaf4acab07a 100644 --- a/include/libcamera/internal/camera_manager.h +++ b/include/libcamera/internal/camera_manager.h @@ -42,11 +42,10 @@ public: * This mutex protects * * - initialized_ and status_ during initialization - * - cameras_ and camerasByDevnum_ after initialization + * - cameras_ after initialization */ mutable Mutex mutex_; std::vector> cameras_ LIBCAMERA_TSA_GUARDED_BY(mutex_); - std::map> camerasByDevnum_ LIBCAMERA_TSA_GUARDED_BY(mutex_); protected: void run() override; diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp index 31d45c42fde0..cd81663281dd 100644 --- a/src/libcamera/camera_manager.cpp +++ b/src/libcamera/camera_manager.cpp @@ -178,15 +178,9 @@ void CameraManager::Private::addCamera(std::shared_ptr camera) } } - auto devnums = camera->properties() - .get(properties::SystemDevices) - .value_or(Span{}); - cameras_.push_back(std::move(camera)); unsigned int index = cameras_.size() - 1; - for (dev_t devnum : devnums) - camerasByDevnum_[devnum] = cameras_[index]; /* Report the addition to the public signal */ CameraManager *const o = LIBCAMERA_O_PTR(); @@ -219,13 +213,6 @@ void CameraManager::Private::removeCamera(std::shared_ptr camera) LOG(Camera, Debug) << "Unregistering camera '" << camera->id() << "'"; - auto iter_d = std::find_if(camerasByDevnum_.begin(), camerasByDevnum_.end(), - [camera](const std::pair> &p) { - return p.second.lock().get() == camera.get(); - }); - if (iter_d != camerasByDevnum_.end()) - camerasByDevnum_.erase(iter_d); - cameras_.erase(iter); /* Report the removal to the public signal */ @@ -366,35 +353,6 @@ std::shared_ptr CameraManager::get(const std::string &id) return nullptr; } -/** - * \brief Retrieve a camera based on device number - * \param[in] devnum Device number of camera to get - * - * This function is meant solely for the use of the V4L2 compatibility - * layer, to map device nodes to Camera instances. Applications shall - * not use it and shall instead retrieve cameras by name. - * - * Before calling this function the caller is responsible for ensuring that - * the camera manager is running. - * - * \context This function is \threadsafe. - * - * \return Shared pointer to Camera object, which is empty if the camera is - * not found - */ -std::shared_ptr CameraManager::get(dev_t devnum) -{ - Private *const d = _d(); - - MutexLocker locker(d->mutex_); - - auto iter = d->camerasByDevnum_.find(devnum); - if (iter == d->camerasByDevnum_.end()) - return nullptr; - - return iter->second.lock(); -} - /** * \var CameraManager::cameraAdded * \brief Notify of a new camera added to the system