Commit c3a6a05f0f for qemu.org

commit c3a6a05f0f5a47dae0c4da00c0ce40cde143c963
Author: Marc-André Lureau <marcandre.lureau@redhat.com>
Date:   Sun Oct 4 14:23:27 2026 +0400

    ui/clipboard: clean up vm change state handler on last peer unregister

    When the last clipboard peer unregisters, the vm change state handler
    is left dangling. Remove it to avoid stale callbacks after all peers
    are gone.

    Fixes: c967ff606b99 ("ui/clipboard: delay clipboard update when not running")
    Reported-by: Hui Peng <benquike@gmail.com>
    Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
    Message-ID: <20261004-issue-4560-v1-13-ccbef537cbeb@redhat.com>

diff --git a/ui/clipboard.c b/ui/clipboard.c
index e3d8a31ba9..46e602dfef 100644
--- a/ui/clipboard.c
+++ b/ui/clipboard.c
@@ -76,6 +76,10 @@ void qemu_clipboard_peer_unregister(QemuClipboardPeer *peer)
         qemu_clipboard_peer_release(peer, i);
     }
     notifier_remove(&peer->notifier);
+    if (QLIST_EMPTY(&clipboard_notifiers.notifiers)) {
+        g_clear_pointer(&cb_change_state_entry,
+                        qemu_del_vm_change_state_handler);
+    }
 }

 bool qemu_clipboard_peer_owns(QemuClipboardPeer *peer,