Patch Detail
Show a patch.
GET /api/1.1/patches/18786/?format=api
{ "id": 18786, "url": "https://patchwork.libcamera.org/api/1.1/patches/18786/?format=api", "web_url": "https://patchwork.libcamera.org/patch/18786/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20230704225746.3838484-3-kieran.bingham@ideasonboard.com>", "date": "2023-07-04T22:57:46", "name": "[libcamera-devel,v2,2/2] libcamera: CameraManager: Remove ::get(dev_t)", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "03ad02e6f5384d272c5edb28309310226171bd9a", "submitter": { "id": 4, "url": "https://patchwork.libcamera.org/api/1.1/people/4/?format=api", "name": "Kieran Bingham", "email": "kieran.bingham@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/18786/mbox/", "series": [ { "id": 3952, "url": "https://patchwork.libcamera.org/api/1.1/series/3952/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3952", "date": "2023-07-04T22:57:44", "name": "libcamera: Remove CameraManager::get(dev_t)", "version": 2, "mbox": "https://patchwork.libcamera.org/series/3952/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/18786/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/18786/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 EF95CBE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 4 Jul 2023 22:58:50 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E66A761E38;\n\tWed, 5 Jul 2023 00:58:49 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 06FC5628C0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 5 Jul 2023 00:58:47 +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 7A7442098;\n\tWed, 5 Jul 2023 00:58:02 +0200 (CEST)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1688511529;\n\tbh=vTK6gpR6kJ2fmaNAiZ3z+mcXUv32gnNmX7YfQzHNW3Y=;\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=vikdgP9Lxc7fjXp7wAfx/dSmFF2xYafqBtM6VF0nGpvnTmu07PQl7taTUuJWkhTCp\n\tsRgJ7TQasX/DCQZrxchtonlBwXcdMXImEzV5CkKY0R5gMNv/XOn+6+GoQ5jTvSyiF4\n\tgQGi5EyuOUlbsplgthPSLsjWne0Voc1ySsdfwmHZmGoJFFP8rAyVPJCEwHsYeQyklM\n\tn/1ysUjZixe4ioI1fnfsGq1MsDfEThuc2Bftppp8D+DM2Lfc6G81l+SNG5DrSSRDPp\n\tkSBuPnlv6comDDoyweQAXVmXNAMBwp58d+Rtdjg8ZImo6Fd2pxDKo0zftXi3lEkivd\n\t7Bf3v//l6eonA==", "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1688511482;\n\tbh=vTK6gpR6kJ2fmaNAiZ3z+mcXUv32gnNmX7YfQzHNW3Y=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=GPadJYxG9tDByQYeteG7c+R07x3KkDS45GDv/DDKX1gLfHCHE60YQl0x/hqyvh/xX\n\t1tiyzzPZdfduK/Ga9oLRKvcH5NE/gLd6cm2N27ODCh3uYou63lMXVXKUvjYXkgRQAK\n\tG4TfaiqdkUQ8YiQrG+B5GHMT81K9Qh7fa1MCVg3I=" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"GPadJYxG\"; dkim-atps=neutral", "To": "libcamera devel <libcamera-devel@lists.libcamera.org>", "Date": "Tue, 4 Jul 2023 23:57:46 +0100", "Message-Id": "<20230704225746.3838484-3-kieran.bingham@ideasonboard.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20230704225746.3838484-1-kieran.bingham@ideasonboard.com>", "References": "<20230704225746.3838484-1-kieran.bingham@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v2 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\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\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 e4f5aaf4ec6d..33ebe0699fdf 100644\n--- a/include/libcamera/internal/camera_manager.h\n+++ b/include/libcamera/internal/camera_manager.h\n@@ -50,11 +50,10 @@ private:\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 \tConditionVariable cv_;\n \tbool initialized_ LIBCAMERA_TSA_GUARDED_BY(mutex_);\ndiff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\nindex 7c65bb99e797..355f3adad68f 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", "v2", "2/2" ] }