Show a cover letter.

GET /api/covers/24057/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 24057,
    "url": "https://patchwork.libcamera.org/api/covers/24057/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/24057/",
    "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": "<20250804233152.11538-1-laurent.pinchart@ideasonboard.com>",
    "date": "2025-08-04T23:31:49",
    "name": "[v4,0/2] libcamera: Introduce and use scope_exit",
    "submitter": {
        "id": 2,
        "url": "https://patchwork.libcamera.org/api/people/2/?format=api",
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/24057/mbox/",
    "series": [
        {
            "id": 5357,
            "url": "https://patchwork.libcamera.org/api/series/5357/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5357",
            "date": "2025-08-04T23:31:49",
            "name": "libcamera: Introduce and use scope_exit",
            "version": 4,
            "mbox": "https://patchwork.libcamera.org/series/5357/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/24057/comments/",
    "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 4E937BE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  4 Aug 2025 23:32:09 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 49B376921D;\n\tTue,  5 Aug 2025 01:32:08 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0778D61466\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  5 Aug 2025 01:32:06 +0200 (CEST)",
            "from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 6B25932FD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  5 Aug 2025 01:31:18 +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=\"IrEbYr9F\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1754350278;\n\tbh=VcwlxHY9wgGPcAlPwYey7b0SZvcyKZeF4USULLlapZI=;\n\th=From:To:Subject:Date:From;\n\tb=IrEbYr9FPwggc7dOPdIqWZBndUZzZQ3KmS0ILdj2Dj0mJN7ywq0IJs7AOA5MC1p1D\n\tyzUeTWvRe0kP8y34qAnQKQ4udJAoE9t/F8tZs6h8iJ2yYhDZHDAYCM+hskfBuP29qn\n\tmvLoTqWgbU4QWrDt5p//nw8TLaYcmGDakxpBGFns=",
        "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Subject": "[PATCH v4 0/2] libcamera: Introduce and use scope_exit",
        "Date": "Tue,  5 Aug 2025 02:31:49 +0300",
        "Message-ID": "<20250804233152.11538-1-laurent.pinchart@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.49.1",
        "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": "Hello,\n\nlibcamera includes a ScopeExitActions class that simplifies error\nhandling by gathering cleanup actions for automatic run on scope exit.\nThe mechanism is quite versatile, but is not suitable for hot paths as\nit requires dynamic heap allocation.\n\nThis series introduces in patch 1/2 a new simpler scope_exit class that\nimplements the API defined in the C++ library fundamentals TS v3. It\ndoes not suffer from the same issue as ScopeExitActions, but is less\nversatile as a result. Patch 2/2 then uses the new class in\nV4L2VideoDevice::queueBuffer() to simplify error handling.\n\nLaurent Pinchart (2):\n  libcamera: utils: Add scope_exit class\n  libcamera: v4l2_videodevice: Use scope_exit\n\n include/libcamera/base/utils.h     | 38 ++++++++++++++++++++++++++++++\n src/libcamera/v4l2_videodevice.cpp | 11 +++------\n 2 files changed, 41 insertions(+), 8 deletions(-)\n\n\nbase-commit: 7a42f3c3d88926aa05b07d9c6a783bdbbfb73610\n--\nRegards,\n\nLaurent Pinchart"
}