summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2019-03-25 10:43:00 +0100
committerBenjamin Berg <benjamin@sipsolutions.net>2019-04-15 16:23:20 +0000
commitfb2ca61f40ea7ba94fdf3bf579e80fc3700867af (patch)
tree3df55ead3e0a31e0ad4f8edb5b211cf28a2ebfea
parentcb2a1c37bc63386b232a8169ef992b977af4e03f (diff)
downloadgnome-settings-daemon-fb2ca61f40ea7ba94fdf3bf579e80fc3700867af.tar.gz
power,color: Use g_signal_connect_object for the session manager
The session manager object is globally shared and may live longer than the GSD plugin manager object. Use g_signal_connect_object rathre than g_signal_connect to prevent callbacks to destroyed objects. This is a theoretical issue, no impact has been seen from this.
-rw-r--r--plugins/color/gsd-color-state.c5
-rw-r--r--plugins/power/gsd-power-manager.c6
2 files changed, 6 insertions, 5 deletions
diff --git a/plugins/color/gsd-color-state.c b/plugins/color/gsd-color-state.c
index c9b526d9..fcc56fc5 100644
--- a/plugins/color/gsd-color-state.c
+++ b/plugins/color/gsd-color-state.c
@@ -1366,8 +1366,9 @@ gcm_session_client_connect_cb (GObject *source_object,
}
/* watch if sessions change */
- g_signal_connect (state->session, "g-properties-changed",
- G_CALLBACK (gcm_session_active_changed_cb), state);
+ g_signal_connect_object (state->session, "g-properties-changed",
+ G_CALLBACK (gcm_session_active_changed_cb),
+ state, 0);
/* add screens */
gnome_rr_screen_refresh (state->state_screen, &error);
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index 8225ab0e..2701751a 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -2427,9 +2427,9 @@ on_rr_screen_acquired (GObject *object,
/* track the active session */
manager->session = gnome_settings_bus_get_session_proxy ();
- g_signal_connect (manager->session, "g-properties-changed",
- G_CALLBACK (engine_session_properties_changed_cb),
- manager);
+ g_signal_connect_object (manager->session, "g-properties-changed",
+ G_CALLBACK (engine_session_properties_changed_cb),
+ manager, 0);
manager->session_is_active = is_session_active (manager);
manager->screensaver_proxy = gnome_settings_bus_get_screen_saver_proxy ();