Show a patch.

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

{
    "id": 17242,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/17242/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/17242/",
    "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": "<20220829233017.2699444-3-paul.elder@ideasonboard.com>",
    "date": "2022-08-29T23:30:12",
    "name": "[libcamera-devel,v4,2/7] utils: ipc: Add support for enums in function parameters",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "6b442aac4c81187d7a48a87e97b75cb628217412",
    "submitter": {
        "id": 17,
        "url": "https://patchwork.libcamera.org/api/1.1/people/17/?format=api",
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/17242/mbox/",
    "series": [
        {
            "id": 3450,
            "url": "https://patchwork.libcamera.org/api/1.1/series/3450/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3450",
            "date": "2022-08-29T23:30:10",
            "name": "utils: ipc: Add support for enums and Flags",
            "version": 4,
            "mbox": "https://patchwork.libcamera.org/series/3450/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/17242/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/17242/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 AF95BC3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 29 Aug 2022 23:30:33 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0118A61FCB;\n\tTue, 30 Aug 2022 01:30:32 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 61C7B61FBE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 30 Aug 2022 01:30:29 +0200 (CEST)",
            "from pyrite.mediacom.info (unknown\n\t[IPv6:2604:2d80:ad8a:9000:1bf9:855b:22de:3645])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 14870481;\n\tTue, 30 Aug 2022 01:30:27 +0200 (CEST)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1661815833;\n\tbh=MYU606i8EwFZCs3I/T0Dfsm3IbmzvjzvJaVt6A0S0P4=;\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=GC+XO9PdyCaXUpdL9dM09A9fK1RA4dmuuzsTCqhdI3XgRI1Dq1F456IymZNB35Ptt\n\tqiHW6J3kglIQawpDfyJ8SWbqY7wXzjdRPUotOsmieS0wFCaqbG7p9SgjTMplQaC8Hs\n\tNaL+I+HC4ZPraT0+3QSGo1mmjZujO9hfGqc83s2iR2Kc3xTdAZH2IHrGvX8ngc78OV\n\tkPkIuWKjxLkh2KfB3o46SUTDKBdwRUNONZhf+QtHD6pu6IM3M+++dX11WZZHqgzVOE\n\t8PYW6EogQVtuvx93v6L9un4MJpVHDdVgyYXNXUZ0fq3YDuqOni17m/qauY2EL6FV6e\n\tonbbBi1y8wg3A==",
            "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1661815828;\n\tbh=MYU606i8EwFZCs3I/T0Dfsm3IbmzvjzvJaVt6A0S0P4=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=beUjBhYkt8zz7IlJrhQQXrFLSAJ07rINRbEX2HQGHEacnnNfkwScm2B0kYvTFDfzy\n\t02Urmlk4j4TLqBcytdz80x4yUTK8EE/cfnbMeu36woTCddP4L/zoYtdrnGRdgTr61/\n\tgal0nGqFL0wCkzfNeA0RXrn2DVAv8Cpv30eYDd8g="
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"beUjBhYk\"; dkim-atps=neutral",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Mon, 29 Aug 2022 18:30:12 -0500",
        "Message-Id": "<20220829233017.2699444-3-paul.elder@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.30.2",
        "In-Reply-To": "<20220829233017.2699444-1-paul.elder@ideasonboard.com>",
        "References": "<20220829233017.2699444-1-paul.elder@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v4 2/7] utils: ipc: Add support for enums\n\tin function parameters",
        "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": "Paul Elder via libcamera-devel <libcamera-devel@lists.libcamera.org>",
        "Reply-To": "Paul Elder <paul.elder@ideasonboard.com>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "There is already support for enums as struct members, but there was no\nsupport for enums in function parameters. Add it.\n\nThis does not add support for returning enums as direct return values.\n\nSigned-off-by: Paul Elder <paul.elder@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n---\nNo change in v4\n\nNo change in v3\n\nChanges in v2:\n- add static assertion to confirm that the enum type fits in int32_t\n---\n .../libcamera_templates/proxy_functions.tmpl     | 16 ++++++++++++++--\n 1 file changed, 14 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl\nindex bac826a7..cbcfb64a 100644\n--- a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl\n+++ b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl\n@@ -52,6 +52,9 @@\n  #}\n {%- macro serialize_call(params, buf, fds) %}\n {%- for param in params %}\n+{%- if param|is_enum %}\n+\tstatic_assert(sizeof({{param|name_full}}) <= 4);\n+{%- endif %}\n \tstd::vector<uint8_t> {{param.mojom_name}}Buf;\n {%- if param|has_fd %}\n \tstd::vector<SharedFD> {{param.mojom_name}}Fds;\n@@ -59,7 +62,11 @@\n {%- else %}\n \tstd::tie({{param.mojom_name}}Buf, std::ignore) =\n {%- endif %}\n+{%- if param|is_enum %}\n+\t\tIPADataSerializer<uint32_t>::serialize(static_cast<uint32_t>({{param.mojom_name}})\n+{%- else %}\n \t\tIPADataSerializer<{{param|name}}>::serialize({{param.mojom_name}}\n+{% endif -%}\n {{- \", &controlSerializer_\" if param|needs_control_serializer -}}\n );\n {%- endfor %}\n@@ -97,7 +104,12 @@\n  # This code is meant to be used by macro deserialize_call.\n  #}\n {%- macro deserialize_param(param, pointer, loop, buf, fds, iter, data_size) -%}\n-{{\"*\" if pointer}}{{param.mojom_name}} = IPADataSerializer<{{param|name}}>::deserialize(\n+{{\"*\" if pointer}}{{param.mojom_name}} =\n+{%- if param|is_enum %}\n+static_cast<{{param|name_full}}>(IPADataSerializer<uint32_t>::deserialize(\n+{%- else %}\n+IPADataSerializer<{{param|name}}>::deserialize(\n+{%- endif %}\n \t{{buf}}{{- \".cbegin()\" if not iter}} + {{param.mojom_name}}Start,\n {%- if loop.last and not iter %}\n \t{{buf}}.cend()\n@@ -121,7 +133,7 @@\n {%- if param|needs_control_serializer %}\n \t&controlSerializer_\n {%- endif -%}\n-);\n+){{\")\" if param|is_enum}};\n {%- endmacro -%}\n \n \n",
    "prefixes": [
        "libcamera-devel",
        "v4",
        "2/7"
    ]
}