From: Marc-André Lureau Date: Tue, 15 Nov 2022 12:12:13 +0000 (+0400) Subject: ui/dbus: unregister clipboard on connection close X-Git-Tag: v8.0.0-rc0~1^2~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b289bb301a037a2bf98c07269f5cb40561e03357;p=thirdparty%2Fqemu.git ui/dbus: unregister clipboard on connection close Fixes unregistration with p2p connections, since they don't have an associated name owner. Signed-off-by: Marc-André Lureau Reviewed-by: Daniel P. Berrangé --- diff --git a/ui/dbus-clipboard.c b/ui/dbus-clipboard.c index df9a754a8dc..fe7fcdecb6f 100644 --- a/ui/dbus-clipboard.c +++ b/ui/dbus-clipboard.c @@ -204,15 +204,6 @@ dbus_clipboard_unregister_proxy(DBusDisplay *dpy) g_clear_object(&dpy->clipboard_proxy); } -static void -dbus_on_clipboard_proxy_name_owner_changed( - DBusDisplay *dpy, - GObject *object, - GParamSpec *pspec) -{ - dbus_clipboard_unregister_proxy(dpy); -} - static gboolean dbus_clipboard_register( DBusDisplay *dpy, @@ -220,6 +211,7 @@ dbus_clipboard_register( { g_autoptr(GError) err = NULL; const char *name = NULL; + GDBusConnection *connection = g_dbus_method_invocation_get_connection(invocation); if (dpy->clipboard_proxy) { g_dbus_method_invocation_return_error( @@ -232,7 +224,7 @@ dbus_clipboard_register( dpy->clipboard_proxy = qemu_dbus_display1_clipboard_proxy_new_sync( - g_dbus_method_invocation_get_connection(invocation), + connection, G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, g_dbus_method_invocation_get_sender(invocation), "/org/qemu/Display1/Clipboard", @@ -252,7 +244,11 @@ dbus_clipboard_register( g_object_connect(dpy->clipboard_proxy, "swapped-signal::notify::g-name-owner", - dbus_on_clipboard_proxy_name_owner_changed, dpy, + dbus_clipboard_unregister_proxy, dpy, + NULL); + g_object_connect(connection, + "swapped-signal::closed", + dbus_clipboard_unregister_proxy, dpy, NULL); qemu_clipboard_reset_serial();