Show a patch.

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

{
    "id": 27085,
    "url": "https://patchwork.libcamera.org/api/patches/27085/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/27085/",
    "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": "<20260629163017.863145-7-barnabas.pocze@ideasonboard.com>",
    "date": "2026-06-29T16:29:29",
    "name": "[RFC,v1,06/54] libcamera: request: completeBuffer(): Emit `bufferCompleted` here",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "02fe7fa4a949221ac4064a30472cf9eb33f7b411",
    "submitter": {
        "id": 216,
        "url": "https://patchwork.libcamera.org/api/people/216/?format=api",
        "name": "Barnabás Pőcze",
        "email": "barnabas.pocze@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/27085/mbox/",
    "series": [
        {
            "id": 6025,
            "url": "https://patchwork.libcamera.org/api/series/6025/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=6025",
            "date": "2026-06-29T16:29:23",
            "name": "libcamera: Split requests and buffers",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/6025/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/27085/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/27085/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 E5F52C3261\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 29 Jun 2026 16:30:46 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6D77465F36;\n\tMon, 29 Jun 2026 18:30:32 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1CC5765F29\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 29 Jun 2026 18:30:22 +0200 (CEST)",
            "from pb-laptop.local (185.221.140.128.nat.pool.zt.hu\n\t[185.221.140.128])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E0658E91;\n\tMon, 29 Jun 2026 18:29:38 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Cz3mBRDp\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1782750579;\n\tbh=A5FPi9pi1Jad1M+o2kl0EVITvDW0V6dnaP6dvzTsv0k=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=Cz3mBRDpQEMHgvLZs0GsK9i7xpCAwk3nzEC2yxFNhTwX8adBmM9GjQ0pI/ABYjePa\n\tut79Fc1lYNM+ZtDbBuY1L+Nlf+byTrQxyqVlgT5ltF8CKw7AWWfHCpjn1Ku4ekdshE\n\tLPacoEF4/lbfBwWJW2jO0gms6/BciiPbSeMh1qec=",
        "From": "=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>",
        "Subject": "[RFC PATCH v1 06/54] libcamera: request: completeBuffer(): Emit\n\t`bufferCompleted` here",
        "Date": "Mon, 29 Jun 2026 18:29:29 +0200",
        "Message-ID": "<20260629163017.863145-7-barnabas.pocze@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.54.0",
        "In-Reply-To": "<20260629163017.863145-1-barnabas.pocze@ideasonboard.com>",
        "References": "<20260629163017.863145-1-barnabas.pocze@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "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>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "The `Request` class already manages the emission of that signal in\n`doCancelRequest()`, so let's move the normal emission from the pipeline\nhandler base class while keeping the ordering of things (except the trace\npoint since it probably makes more sense to have the trace point before\nuser code runs).\n\nSigned-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/libcamera/pipeline_handler.cpp | 2 --\n src/libcamera/request.cpp          | 3 +++\n 2 files changed, 3 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\nindex e7145c1d48..3d49f85cfa 100644\n--- a/src/libcamera/pipeline_handler.cpp\n+++ b/src/libcamera/pipeline_handler.cpp\n@@ -562,8 +562,6 @@ void PipelineHandler::doQueueRequests(Camera *camera)\n  */\n bool PipelineHandler::completeBuffer(Request *request, FrameBuffer *buffer)\n {\n-\tCamera *camera = request->_d()->camera();\n-\tcamera->bufferCompleted.emit(request, buffer);\n \treturn request->_d()->completeBuffer(buffer);\n }\n \ndiff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\nindex 5f983e0ce6..022a97f169 100644\n--- a/src/libcamera/request.cpp\n+++ b/src/libcamera/request.cpp\n@@ -104,6 +104,9 @@ bool Request::Private::completeBuffer(FrameBuffer *buffer)\n {\n \tLIBCAMERA_TRACEPOINT(request_complete_buffer, this, buffer);\n \n+\tRequest *request = LIBCAMERA_O_PTR();\n+\tcamera_->bufferCompleted.emit(request, buffer);\n+\n \tint ret = pending_.erase(buffer);\n \tASSERT(ret == 1);\n \n",
    "prefixes": [
        "RFC",
        "v1",
        "06/54"
    ]
}