summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-04-26 14:09:44 +0200
committerMatthias Clasen <mclasen@redhat.com>2023-04-26 14:09:44 +0200
commitfc1643956baa18a6205fd6f48fb20ba39e792495 (patch)
treec83cbeaa363ee61086fe3ac4a47beca7e861825e
parent8e48e6548b72585d3596822026afd9efa366a2fb (diff)
downloadgtk+-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.c8
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);