Patch Detail
Show a patch.
GET /api/patches/331/?format=api
{ "id": 331, "url": "https://patchwork.libcamera.org/api/patches/331/?format=api", "web_url": "https://patchwork.libcamera.org/patch/331/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/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": "<20190122232955.31783-2-niklas.soderlund@ragnatech.se>", "date": "2019-01-22T23:29:53", "name": "[libcamera-devel,1/3] libcamera: camera: create a association with the responsible pipeline handler", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "2cda9d610205374020cb0391cb322fd8c9fe2fe3", "submitter": { "id": 5, "url": "https://patchwork.libcamera.org/api/people/5/?format=api", "name": "Niklas Söderlund", "email": "niklas.soderlund@ragnatech.se" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/331/mbox/", "series": [ { "id": 117, "url": "https://patchwork.libcamera.org/api/series/117/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=117", "date": "2019-01-22T23:29:52", "name": "libcamera: add association between Camera and PipelineHandlers", "version": 1, "mbox": "https://patchwork.libcamera.org/series/117/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/331/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/331/checks/", "tags": {}, "headers": { "Return-Path": "<niklas.soderlund@ragnatech.se>", "Received": [ "from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net\n\t[195.74.38.229])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1886B60C7D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 23 Jan 2019 00:30:44 +0100 (CET)", "from bismarck.berto.se (unknown [89.233.230.99])\n\tby bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA\n\tid ba9f5212-1e9d-11e9-874f-005056917f90;\n\tWed, 23 Jan 2019 00:30:40 +0100 (CET)" ], "X-Halon-ID": "ba9f5212-1e9d-11e9-874f-005056917f90", "Authorized-sender": "niklas@soderlund.pp.se", "From": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 23 Jan 2019 00:29:53 +0100", "Message-Id": "<20190122232955.31783-2-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.20.1", "In-Reply-To": "<20190122232955.31783-1-niklas.soderlund@ragnatech.se>", "References": "<20190122232955.31783-1-niklas.soderlund@ragnatech.se>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 1/3] libcamera: camera: create a\n\tassociation with the responsible pipeline handler", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.23", "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>", "X-List-Received-Date": "Tue, 22 Jan 2019 23:30:44 -0000" }, "content": "The PipelineHandler which creates a Camera is responsible for serving\nany operation requested by the user. In order to do so the Camera needs\nto store a reference to its creator.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n---\n include/libcamera/camera.h | 8 ++++++--\n src/libcamera/camera.cpp | 15 +++++++++------\n src/libcamera/pipeline/ipu3/ipu3.cpp | 3 ++-\n src/libcamera/pipeline/uvcvideo.cpp | 2 +-\n src/libcamera/pipeline/vimc.cpp | 10 ++--------\n 5 files changed, 20 insertions(+), 18 deletions(-)", "diff": "diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h\nindex 2ea1a6883311cf9f..d3bae4cbee1e0cea 100644\n--- a/include/libcamera/camera.h\n+++ b/include/libcamera/camera.h\n@@ -12,10 +12,13 @@\n \n namespace libcamera {\n \n+class PipelineHandler;\n+\n class Camera final\n {\n public:\n-\tstatic std::shared_ptr<Camera> create(const std::string &name);\n+\tstatic std::shared_ptr<Camera> create(const std::string &name,\n+\t\t\t\t\t class PipelineHandler *pipe);\n \n \tCamera(const Camera &) = delete;\n \tvoid operator=(const Camera &) = delete;\n@@ -23,10 +26,11 @@ public:\n \tconst std::string &name() const;\n \n private:\n-\texplicit Camera(const std::string &name);\n+\texplicit Camera(const std::string &name, class PipelineHandler *pipe);\n \t~Camera();\n \n \tstd::string name_;\n+\tclass PipelineHandler *pipe_;\n };\n \n } /* namespace libcamera */\ndiff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\nindex acf912bee95cbec4..f198eb4978b12239 100644\n--- a/src/libcamera/camera.cpp\n+++ b/src/libcamera/camera.cpp\n@@ -52,17 +52,20 @@ namespace libcamera {\n /**\n * \\brief Create a camera instance\n * \\param[in] name The name of the camera device\n+ * \\param[in] pipe The pipeline handler responsible for the camera device\n *\n * The caller is responsible for guaranteeing unicity of the camera name.\n *\n * \\return A shared pointer to the newly created camera object\n */\n-std::shared_ptr<Camera> Camera::create(const std::string &name)\n+std::shared_ptr<Camera> Camera::create(const std::string &name,\n+\t\t\t\t class PipelineHandler *pipe)\n {\n \tstruct Allocator : std::allocator<Camera> {\n-\t\tvoid construct(void *p, const std::string &name)\n+\t\tvoid construct(void *p, const std::string &name,\n+\t\t\t class PipelineHandler *pipe)\n \t\t{\n-\t\t\t::new(p) Camera(name);\n+\t\t\t::new(p) Camera(name, pipe);\n \t\t}\n \t\tvoid destroy(Camera *p)\n \t\t{\n@@ -70,7 +73,7 @@ std::shared_ptr<Camera> Camera::create(const std::string &name)\n \t\t}\n \t};\n \n-\treturn std::allocate_shared<Camera>(Allocator(), name);\n+\treturn std::allocate_shared<Camera>(Allocator(), name, pipe);\n }\n \n /**\n@@ -83,8 +86,8 @@ const std::string &Camera::name() const\n \treturn name_;\n }\n \n-Camera::Camera(const std::string &name)\n-\t: name_(name)\n+Camera::Camera(const std::string &name, class PipelineHandler *pipe)\n+\t: name_(name), pipe_(pipe)\n {\n }\n \ndiff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex 8cbc10acfbb571fd..48d028f7e6cd9b4d 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -171,7 +171,8 @@ void PipelineHandlerIPU3::registerCameras(CameraManager *manager)\n \t\t\tcontinue;\n \n \t\tstd::string cameraName = sensor->name() + \" \" + std::to_string(id);\n-\t\tstd::shared_ptr<Camera> camera = Camera::create(cameraName);\n+\t\tstd::shared_ptr<Camera> camera = Camera::create(cameraName,\n+\t\t\t\t\t\t\t\tthis);\n \t\tmanager->addCamera(std::move(camera));\n \n \t\tLOG(IPU3, Info)\ndiff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\nindex 3ba69da8b77586e3..3651250b683e7810 100644\n--- a/src/libcamera/pipeline/uvcvideo.cpp\n+++ b/src/libcamera/pipeline/uvcvideo.cpp\n@@ -48,7 +48,7 @@ bool PipelineHandlerUVC::match(CameraManager *manager, DeviceEnumerator *enumera\n \n \tdev_->acquire();\n \n-\tstd::shared_ptr<Camera> camera = Camera::create(dev_->model());\n+\tstd::shared_ptr<Camera> camera = Camera::create(dev_->model(), this);\n \tmanager->addCamera(std::move(camera));\n \n \treturn true;\ndiff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp\nindex 82b9237a3d7d93e5..81d8319eb88e06d2 100644\n--- a/src/libcamera/pipeline/vimc.cpp\n+++ b/src/libcamera/pipeline/vimc.cpp\n@@ -57,14 +57,8 @@ bool PipeHandlerVimc::match(CameraManager *manager, DeviceEnumerator *enumerator\n \n \tdev_->acquire();\n \n-\t/*\n-\t * NOTE: A more complete Camera implementation could\n-\t * be passed the MediaDevice(s) it controls here or\n-\t * a reference to the PipelineHandler. Which method\n-\t * will be chosen depends on how the Camera\n-\t * object is modeled.\n-\t */\n-\tstd::shared_ptr<Camera> camera = Camera::create(\"Dummy VIMC Camera\");\n+\tstd::shared_ptr<Camera> camera = Camera::create(\"Dummy VIMC Camera\",\n+\t\t\t\t\t\t\tthis);\n \tmanager->addCamera(std::move(camera));\n \n \treturn true;\n", "prefixes": [ "libcamera-devel", "1/3" ] }