{"id":18746,"url":"https://patchwork.libcamera.org/api/1.1/patches/18746/?format=json","web_url":"https://patchwork.libcamera.org/patch/18746/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20230615225133.622612-3-kieran.bingham@ideasonboard.com>","date":"2023-06-15T22:51:33","name":"[libcamera-devel,2/2] libcamera: CameraManager: Remove ::get(dev_t)","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"7642d9a05ef3e14493dc8bfc773d6ffcd4b58e4a","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/1.1/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/18746/mbox/","series":[{"id":3927,"url":"https://patchwork.libcamera.org/api/1.1/series/3927/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=3927","date":"2023-06-15T22:51:31","name":"libcamera: Remove CameraManager::get(dev_t)","version":1,"mbox":"https://patchwork.libcamera.org/series/3927/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/18746/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/18746/checks/","tags":{},"headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id E7F23C3291\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 15 Jun 2023 22:51:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 685F4628BF;\n\tFri, 16 Jun 2023 00:51:41 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4489F61E4A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 16 Jun 2023 00:51:38 +0200 (CEST)","from Monstersaurus.local\n\t(aztw-30-b2-v4wan-166917-cust845.vm26.cable.virginm.net\n\t[82.37.23.78])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 84082D9B;\n\tFri, 16 Jun 2023 00:51:06 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1686869501;\n\tbh=u0VtxUzjd5KFs2j8GKqK87c38rLuZUafIGVKUrM3QOc=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=DhQge2RK7QFXTBK8YnyHMKOZe0gOEnlFipazoUapmghnOwESLVPLbUVT0NP+Y0BVC\n\twkcPEKusqpQ0fqkWJbvlMzxbEfHRHzSQZF5KJXZZhEBA2E1vhuqfMXz0J26i9alVjM\n\tZw91IslAOsmVbJS5lhGaIPORgRg6fBTU1PbLpKK/CcYKEYPTeL0YmiWkQfdUHnpkn7\n\tkYHkbIy43le64HZEJevoQcjFRxVziN7Jx4Yx7B2B2slodX7Oo8vK5Rkgc2MvNaNMVl\n\teylPxn+/6PGFdjjrfMbJXcEq6sv/hzh4gKTILbACZZR1YZyrxLioqWQoT2xgOztbsH\n\tOCEtyRHZxzA6g==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1686869466;\n\tbh=u0VtxUzjd5KFs2j8GKqK87c38rLuZUafIGVKUrM3QOc=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=PhKUKPlwywQ1a4jfa5Jta481rY7dAmID5sQBG1dNgK6NcT8I8DPdIqAX8h/Wx/CfA\n\tD/ikyARyXiBbkEuPWKwAJlDW9vijqiljs4YKnl25DwqJw/cdSvQbXujM8KemJ/imPs\n\tLeCL4GB63mwGdElSjDzKHbCijzm6emOo2Lb1T5PA="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"PhKUKPlw\"; dkim-atps=neutral","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","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","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH 2/2] libcamera: CameraManager: Remove\n\t::get(dev_t)","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"The CameraManager::get(dev_t) implementation was provided only for the\nV4L2 Adaptation layer. This has now been replaced with the use of the\npublic SystemDevices property.\n\nRemove the deprecated function entirely, along with the camerasByDevnum_\nmap which was only used to support this functionality.\n\nThis is a clear (and intentional) breakage in both the API and ABI.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n include/libcamera/camera_manager.h          |  1 -\n include/libcamera/internal/camera_manager.h |  3 +-\n src/libcamera/camera_manager.cpp            | 42 ---------------------\n 3 files changed, 1 insertion(+), 45 deletions(-)","diff":"diff --git a/include/libcamera/camera_manager.h b/include/libcamera/camera_manager.h\nindex 9767acc42c89..1a891cacf26a 100644\n--- a/include/libcamera/camera_manager.h\n+++ b/include/libcamera/camera_manager.h\n@@ -32,7 +32,6 @@ public:\n \n \tstd::vector<std::shared_ptr<Camera>> cameras() const;\n \tstd::shared_ptr<Camera> get(const std::string &id);\n-\tstd::shared_ptr<Camera> get(dev_t devnum);\n \n \tstatic const std::string &version() { return version_; }\n \ndiff --git a/include/libcamera/internal/camera_manager.h b/include/libcamera/internal/camera_manager.h\nindex cdf009a9c626..2aaf4acab07a 100644\n--- a/include/libcamera/internal/camera_manager.h\n+++ b/include/libcamera/internal/camera_manager.h\n@@ -42,11 +42,10 @@ public:\n \t * This mutex protects\n \t *\n \t * - initialized_ and status_ during initialization\n-\t * - cameras_ and camerasByDevnum_ after initialization\n+\t * - cameras_ after initialization\n \t */\n \tmutable Mutex mutex_;\n \tstd::vector<std::shared_ptr<Camera>> cameras_ LIBCAMERA_TSA_GUARDED_BY(mutex_);\n-\tstd::map<dev_t, std::weak_ptr<Camera>> camerasByDevnum_ LIBCAMERA_TSA_GUARDED_BY(mutex_);\n \n protected:\n \tvoid run() override;\ndiff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\nindex 31d45c42fde0..cd81663281dd 100644\n--- a/src/libcamera/camera_manager.cpp\n+++ b/src/libcamera/camera_manager.cpp\n@@ -178,15 +178,9 @@ void CameraManager::Private::addCamera(std::shared_ptr<Camera> camera)\n \t\t}\n \t}\n \n-\tauto devnums = camera->properties()\n-\t\t\t       .get(properties::SystemDevices)\n-\t\t\t       .value_or(Span<int64_t>{});\n-\n \tcameras_.push_back(std::move(camera));\n \n \tunsigned int index = cameras_.size() - 1;\n-\tfor (dev_t devnum : devnums)\n-\t\tcamerasByDevnum_[devnum] = cameras_[index];\n \n \t/* Report the addition to the public signal */\n \tCameraManager *const o = LIBCAMERA_O_PTR();\n@@ -219,13 +213,6 @@ void CameraManager::Private::removeCamera(std::shared_ptr<Camera> camera)\n \tLOG(Camera, Debug)\n \t\t<< \"Unregistering camera '\" << camera->id() << \"'\";\n \n-\tauto iter_d = std::find_if(camerasByDevnum_.begin(), camerasByDevnum_.end(),\n-\t\t\t\t   [camera](const std::pair<dev_t, std::weak_ptr<Camera>> &p) {\n-\t\t\t\t\t   return p.second.lock().get() == camera.get();\n-\t\t\t\t   });\n-\tif (iter_d != camerasByDevnum_.end())\n-\t\tcamerasByDevnum_.erase(iter_d);\n-\n \tcameras_.erase(iter);\n \n \t/* Report the removal to the public signal */\n@@ -366,35 +353,6 @@ std::shared_ptr<Camera> CameraManager::get(const std::string &id)\n \treturn nullptr;\n }\n \n-/**\n- * \\brief Retrieve a camera based on device number\n- * \\param[in] devnum Device number of camera to get\n- *\n- * This function is meant solely for the use of the V4L2 compatibility\n- * layer, to map device nodes to Camera instances. Applications shall\n- * not use it and shall instead retrieve cameras by name.\n- *\n- * Before calling this function the caller is responsible for ensuring that\n- * the camera manager is running.\n- *\n- * \\context This function is \\threadsafe.\n- *\n- * \\return Shared pointer to Camera object, which is empty if the camera is\n- * not found\n- */\n-std::shared_ptr<Camera> CameraManager::get(dev_t devnum)\n-{\n-\tPrivate *const d = _d();\n-\n-\tMutexLocker locker(d->mutex_);\n-\n-\tauto iter = d->camerasByDevnum_.find(devnum);\n-\tif (iter == d->camerasByDevnum_.end())\n-\t\treturn nullptr;\n-\n-\treturn iter->second.lock();\n-}\n-\n /**\n  * \\var CameraManager::cameraAdded\n  * \\brief Notify of a new camera added to the system\n","prefixes":["libcamera-devel","2/2"]}