Show a patch.

GET /api/1.1/patches/9311/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 9311,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/9311/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/9311/",
    "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": "<20200813095726.3497193-5-niklas.soderlund@ragnatech.se>",
    "date": "2020-08-13T09:57:23",
    "name": "[libcamera-devel,v3,4/7] libcamera: pipeline: uvcvideo: Initialize CameraData from MediaDevice",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "e3fc449b6f41f2de56e124d9130109bc7de9b6f6",
    "submitter": {
        "id": 5,
        "url": "https://patchwork.libcamera.org/api/1.1/people/5/?format=api",
        "name": "Niklas Söderlund",
        "email": "niklas.soderlund@ragnatech.se"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/9311/mbox/",
    "series": [
        {
            "id": 1217,
            "url": "https://patchwork.libcamera.org/api/1.1/series/1217/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1217",
            "date": "2020-08-13T09:57:19",
            "name": "libcamera: Allow for user-friendly names in applications",
            "version": 3,
            "mbox": "https://patchwork.libcamera.org/series/1217/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/9311/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/9311/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 66EA5BD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 13 Aug 2020 09:57:45 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3F268613BC;\n\tThu, 13 Aug 2020 11:57:45 +0200 (CEST)",
            "from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net\n\t[195.74.38.227])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B765460DF1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 13 Aug 2020 11:57:40 +0200 (CEST)",
            "from bismarck.berto.se (p54ac52a8.dip0.t-ipconnect.de\n\t[84.172.82.168]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA\n\tid 6ba7ace0-dd4b-11ea-92dc-005056917a89;\n\tThu, 13 Aug 2020 11:57:38 +0200 (CEST)"
        ],
        "X-Halon-ID": "6ba7ace0-dd4b-11ea-92dc-005056917a89",
        "Authorized-sender": "niklas.soderlund@fsdn.se",
        "From": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Thu, 13 Aug 2020 11:57:23 +0200",
        "Message-Id": "<20200813095726.3497193-5-niklas.soderlund@ragnatech.se>",
        "X-Mailer": "git-send-email 2.28.0",
        "In-Reply-To": "<20200813095726.3497193-1-niklas.soderlund@ragnatech.se>",
        "References": "<20200813095726.3497193-1-niklas.soderlund@ragnatech.se>",
        "MIME-Version": "1.0",
        "Subject": "[libcamera-devel] [PATCH v3 4/7] libcamera: pipeline: uvcvideo:\n\tInitialize CameraData from MediaDevice",
        "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>",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "base64",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "The UVCCameraData::init() is the only consumer of the default entry in\nthe media graph, move the lookup of it into the init() function and pass\nit the MediaDevice. This is done in preparation to extend the CameraData\ninitialization to consume more information form the MediaDevice.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 30 ++++++++++----------\n 1 file changed, 15 insertions(+), 15 deletions(-)",
    "diff": "diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\nindex bc892ecfac046881..b12083a7a74dae54 100644\n--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n@@ -43,7 +43,7 @@ public:\n \t\tdelete video_;\n \t}\n \n-\tint init(MediaEntity *entity);\n+\tint init(MediaDevice *media);\n \tvoid addControl(uint32_t cid, const ControlInfo &v4l2info,\n \t\t\tControlInfoMap::Map *ctrls);\n \tvoid bufferReady(FrameBuffer *buffer);\n@@ -457,18 +457,7 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n \n \tstd::unique_ptr<UVCCameraData> data = std::make_unique<UVCCameraData>(this);\n \n-\t/* Locate and initialise the camera data with the default video node. */\n-\tconst std::vector<MediaEntity *> &entities = media->entities();\n-\tauto entity = std::find_if(entities.begin(), entities.end(),\n-\t\t\t\t   [](MediaEntity *entity) {\n-\t\t\t\t\t   return entity->flags() & MEDIA_ENT_FL_DEFAULT;\n-\t\t\t\t   });\n-\tif (entity == entities.end()) {\n-\t\tLOG(UVC, Error) << \"Could not find a default video device\";\n-\t\treturn false;\n-\t}\n-\n-\tif (data->init(*entity))\n+\tif (data->init(media))\n \t\treturn false;\n \n \t/* Create and register the camera. */\n@@ -488,12 +477,23 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n \treturn true;\n }\n \n-int UVCCameraData::init(MediaEntity *entity)\n+int UVCCameraData::init(MediaDevice *media)\n {\n \tint ret;\n \n+\t/* Locate and initialise the camera data with the default video node. */\n+\tconst std::vector<MediaEntity *> &entities = media->entities();\n+\tauto entity = std::find_if(entities.begin(), entities.end(),\n+\t\t\t\t   [](MediaEntity *entity) {\n+\t\t\t\t\t   return entity->flags() & MEDIA_ENT_FL_DEFAULT;\n+\t\t\t\t   });\n+\tif (entity == entities.end()) {\n+\t\tLOG(UVC, Error) << \"Could not find a default video device\";\n+\t\treturn -ENODEV;\n+\t}\n+\n \t/* Create and open the video device. */\n-\tvideo_ = new V4L2VideoDevice(entity);\n+\tvideo_ = new V4L2VideoDevice(*entity);\n \tret = video_->open();\n \tif (ret)\n \t\treturn ret;\n",
    "prefixes": [
        "libcamera-devel",
        "v3",
        "4/7"
    ]
}