get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2218030,
    "url": "http://patchwork.ozlabs.org/api/patches/2218030/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260331095302.644608-4-marcandre.lureau@redhat.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260331095302.644608-4-marcandre.lureau@redhat.com>",
    "list_archive_url": null,
    "date": "2026-03-31T09:52:59",
    "name": "[PULL,3/6] ui/dbus: tear down clipboard callbacks on display finalize",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "4e36cc3fb3ed5fcb05b20f7b112d749c428927c1",
    "submitter": {
        "id": 66774,
        "url": "http://patchwork.ozlabs.org/api/people/66774/?format=api",
        "name": "Marc-André Lureau",
        "email": "marcandre.lureau@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260331095302.644608-4-marcandre.lureau@redhat.com/mbox/",
    "series": [
        {
            "id": 498160,
            "url": "http://patchwork.ozlabs.org/api/series/498160/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=498160",
            "date": "2026-03-31T09:52:57",
            "name": "[PULL,1/6] audio/mixeng: fix sw/hw mixup in audio_pcm_sw_init_",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/498160/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2218030/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2218030/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=K2GFwJYT;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4flNkK3gffz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 20:54:17 +1100 (AEDT)",
            "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1w7Vmw-0000WT-JV; Tue, 31 Mar 2026 05:53:34 -0400",
            "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>)\n id 1w7Vmu-0000W5-Nw\n for qemu-devel@nongnu.org; Tue, 31 Mar 2026 05:53:32 -0400",
            "from us-smtp-delivery-124.mimecast.com ([170.10.129.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>)\n id 1w7Vmt-00085e-A3\n for qemu-devel@nongnu.org; Tue, 31 Mar 2026 05:53:32 -0400",
            "from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-175-or04q_v8Pm-qbfExPnd_PA-1; Tue,\n 31 Mar 2026 05:53:27 -0400",
            "from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id E4400180044D; Tue, 31 Mar 2026 09:53:25 +0000 (UTC)",
            "from localhost (unknown [10.44.22.22])\n by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 4319E1955F42; Tue, 31 Mar 2026 09:53:23 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1774950810;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=DCd5vbV6w9R6yKj4V/czrdfnnJcVB5pJMCCePIO1TVw=;\n b=K2GFwJYTnoVq1rhkXdYUNnRGGYzfmyU175BQLquVLTfHXP8jXLkSeCew1kaNwbY+EeRG8F\n OTcByK5R9Yizkx3FgBWeOzvMVwk/D3qFAOGxTTY1frUO5xkkvuPKfIwoT8Eg0cO18d9cC6\n 1L6ZZs8tsqsHjX/72ypncvrIEFs7T20=",
        "X-MC-Unique": "or04q_v8Pm-qbfExPnd_PA-1",
        "X-Mimecast-MFC-AGG-ID": "or04q_v8Pm-qbfExPnd_PA_1774950806",
        "From": "marcandre.lureau@redhat.com",
        "To": "qemu-devel@nongnu.org",
        "Cc": "peter.maydell@linaro.org, GuoHan Zhao <zhaoguohan@kylinos.cn>,\n\t=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>",
        "Subject": "[PULL 3/6] ui/dbus: tear down clipboard callbacks on display finalize",
        "Date": "Tue, 31 Mar 2026 13:52:59 +0400",
        "Message-ID": "<20260331095302.644608-4-marcandre.lureau@redhat.com>",
        "In-Reply-To": "<20260331095302.644608-1-marcandre.lureau@redhat.com>",
        "References": "<20260331095302.644608-1-marcandre.lureau@redhat.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.12",
        "Received-SPF": "pass client-ip=170.10.129.124;\n envelope-from=marcandre.lureau@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com",
        "X-Spam_score_int": "-5",
        "X-Spam_score": "-0.6",
        "X-Spam_bar": "/",
        "X-Spam_report": "(-0.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=1,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=1, SPF_HELO_PASS=-0.001,\n SPF_PASS=-0.001 autolearn=no autolearn_force=no",
        "X-Spam_action": "no action",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "qemu development <qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"
    },
    "content": "From: GuoHan Zhao <zhaoguohan@kylinos.cn>\n\nThe clipboard D-Bus teardown path currently runs when the peer\ndisappears, but not when DBusDisplay itself is finalized.\n\nThat leaves pending clipboard requests and signal handlers associated\nwith the clipboard proxy active past display teardown.\n\nAdd an explicit clipboard fini hook and invoke it from\ndbus_display_finalize() so the clipboard teardown also runs during\ndisplay destruction.\n\nbixes: ff1a5810f61f (\"ui/dbus: add clipboard interface\")\nSigned-off-by: GuoHan Zhao <zhaoguohan@kylinos.cn>\nMessage-ID: <20260330091310.42868-1-zhaoguohan@kylinos.cn>\n[ Marc-André - Move clipobard finalization to the function]\nReviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>\n---\n ui/dbus.h           |  1 +\n ui/dbus-clipboard.c | 16 ++++++++++++++++\n ui/dbus.c           |  3 +--\n 3 files changed, 18 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/ui/dbus.h b/ui/dbus.h\nindex 1e8c24a48e3..986d7774601 100644\n--- a/ui/dbus.h\n+++ b/ui/dbus.h\n@@ -150,5 +150,6 @@ void dbus_display_notify(DBusDisplayEvent *event);\n void dbus_chardev_init(DBusDisplay *dpy);\n \n void dbus_clipboard_init(DBusDisplay *dpy);\n+void dbus_clipboard_fini(DBusDisplay *dpy);\n \n #endif /* UI_DBUS_H */\ndiff --git a/ui/dbus-clipboard.c b/ui/dbus-clipboard.c\nindex 6787a776687..935b6b1a2ac 100644\n--- a/ui/dbus-clipboard.c\n+++ b/ui/dbus-clipboard.c\n@@ -191,6 +191,7 @@ static void\n dbus_clipboard_unregister_proxy(DBusDisplay *dpy)\n {\n     const char *name = NULL;\n+    GDBusConnection *connection = NULL;\n     int i;\n \n     for (i = 0; i < G_N_ELEMENTS(dpy->clipboard_request); ++i) {\n@@ -201,6 +202,13 @@ dbus_clipboard_unregister_proxy(DBusDisplay *dpy)\n         return;\n     }\n \n+    connection = g_dbus_proxy_get_connection(\n+        G_DBUS_PROXY(dpy->clipboard_proxy));\n+    if (connection) {\n+        g_signal_handlers_disconnect_by_data(connection, dpy);\n+    }\n+    g_signal_handlers_disconnect_by_data(dpy->clipboard_proxy, dpy);\n+\n     name = g_dbus_proxy_get_name(G_DBUS_PROXY(dpy->clipboard_proxy));\n     trace_dbus_clipboard_unregister(name);\n     g_clear_object(&dpy->clipboard_proxy);\n@@ -425,6 +433,14 @@ dbus_clipboard_request(\n     return DBUS_METHOD_INVOCATION_HANDLED;\n }\n \n+void\n+dbus_clipboard_fini(DBusDisplay *dpy)\n+{\n+    dbus_clipboard_unregister_proxy(dpy);\n+    qemu_clipboard_peer_unregister(&dpy->clipboard_peer);\n+    g_clear_object(&dpy->clipboard);\n+}\n+\n void\n dbus_clipboard_init(DBusDisplay *dpy)\n {\ndiff --git a/ui/dbus.c b/ui/dbus.c\nindex 7c54b6a502d..794b65c4ada 100644\n--- a/ui/dbus.c\n+++ b/ui/dbus.c\n@@ -145,8 +145,7 @@ dbus_display_finalize(Object *o)\n         dbus_display_notifier_remove(&dd->notifier);\n     }\n \n-    qemu_clipboard_peer_unregister(&dd->clipboard_peer);\n-    g_clear_object(&dd->clipboard);\n+    dbus_clipboard_fini(dd);\n \n     g_clear_object(&dd->server);\n     g_clear_pointer(&dd->consoles, g_ptr_array_unref);\n",
    "prefixes": [
        "PULL",
        "3/6"
    ]
}