diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-04-26 14:09:44 +0200 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-04-26 14:09:44 +0200 |
commit | fc1643956baa18a6205fd6f48fb20ba39e792495 (patch) | |
tree | c83cbeaa363ee61086fe3ac4a47beca7e861825e | |
parent | 8e48e6548b72585d3596822026afd9efa366a2fb (diff) | |
download | gtk+-fc1643956baa18a6205fd6f48fb20ba39e792495.tar.gz |
application: Clean up signal handlers
This is the right thing to do and might help for #5775.
-rw-r--r-- | gtk/gtkapplication-dbus.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gtk/gtkapplication-dbus.c b/gtk/gtkapplication-dbus.c index 4951b1f558..dc0e1bcedb 100644 --- a/gtk/gtkapplication-dbus.c +++ b/gtk/gtkapplication-dbus.c @@ -42,6 +42,12 @@ G_DEFINE_TYPE (GtkApplicationImplDBus, gtk_application_impl_dbus, GTK_TYPE_APPLI #define GNOME_SCREENSAVER_DBUS_OBJECT_PATH "/org/gnome/ScreenSaver" #define GNOME_SCREENSAVER_DBUS_INTERFACE "org.gnome.ScreenSaver" +static void client_proxy_signal (GDBusProxy *proxy, + const gchar *sender_name, + const gchar *signal_name, + GVariant *parameters, + gpointer user_data); + static void unregister_client (GtkApplicationImplDBus *dbus) { @@ -63,6 +69,7 @@ unregister_client (GtkApplicationImplDBus *dbus) g_error_free (error); } + g_signal_handlers_disconnect_by_func (dbus->client_proxy, client_proxy_signal, dbus); g_clear_object (&dbus->client_proxy); g_free (dbus->client_path); @@ -892,6 +899,7 @@ gtk_application_impl_dbus_finalize (GObject *object) g_free (dbus->app_menu_path); g_free (dbus->menubar_path); g_clear_object (&dbus->sm_proxy); + g_signal_handlers_disconnect_by_func (dbus->ss_proxy, screensaver_signal_session, dbus->impl.application); g_clear_object (&dbus->ss_proxy); G_OBJECT_CLASS (gtk_application_impl_dbus_parent_class)->finalize (object); |