diff --git a/src/nm-manager.c b/src/nm-manager.c index f1c355281e..34105ae9b0 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -4852,10 +4852,10 @@ nm_manager_init (NMManager *manager) nm_log_warn (LOGD_AUTOIP4, "could not initialize avahi-autoipd D-Bus proxy"); /* sleep/wake handling */ - priv->sleep_monitor = nm_sleep_monitor_get (); - g_signal_connect (priv->sleep_monitor, "sleeping", + priv->sleep_monitor = g_object_ref (nm_sleep_monitor_get ()); + g_signal_connect (priv->sleep_monitor, NM_SLEEP_MONITOR_SLEEPING, G_CALLBACK (sleeping_cb), manager); - g_signal_connect (priv->sleep_monitor, "resuming", + g_signal_connect (priv->sleep_monitor, NM_SLEEP_MONITOR_RESUMING, G_CALLBACK (resuming_cb), manager); /* Listen for authorization changes */ @@ -5065,7 +5065,11 @@ dispose (GObject *object) } g_clear_object (&priv->aipd_proxy); - g_clear_object (&priv->sleep_monitor); + if (priv->sleep_monitor) { + g_signal_handlers_disconnect_by_func (priv->sleep_monitor, sleeping_cb, manager); + g_signal_handlers_disconnect_by_func (priv->sleep_monitor, resuming_cb, manager); + g_clear_object (&priv->sleep_monitor); + } if (priv->fw_monitor) { g_signal_handlers_disconnect_by_func (priv->fw_monitor, firmware_dir_changed, manager); diff --git a/src/nm-sleep-monitor-systemd.c b/src/nm-sleep-monitor-systemd.c index c0bc65e4a6..44523a4a21 100644 --- a/src/nm-sleep-monitor-systemd.c +++ b/src/nm-sleep-monitor-systemd.c @@ -243,16 +243,6 @@ nm_sleep_monitor_class_init (NMSleepMonitorClass *klass) G_TYPE_NONE, 0); } -NMSleepMonitor * -nm_sleep_monitor_get (void) -{ - static NMSleepMonitor *singleton = NULL; - - if (singleton) - return g_object_ref (singleton); - - singleton = NM_SLEEP_MONITOR (g_object_new (NM_TYPE_SLEEP_MONITOR, NULL)); - return singleton; -} +NM_DEFINE_SINGLETON_GETTER (NMSleepMonitor, nm_sleep_monitor_get, NM_TYPE_SLEEP_MONITOR); /* ---------------------------------------------------------------------------------------------------- */ diff --git a/src/nm-sleep-monitor-upower.c b/src/nm-sleep-monitor-upower.c index 39cce5958d..0c46ae10fc 100644 --- a/src/nm-sleep-monitor-upower.c +++ b/src/nm-sleep-monitor-upower.c @@ -133,16 +133,6 @@ nm_sleep_monitor_class_init (NMSleepMonitorClass *klass) G_TYPE_NONE, 0); } -NMSleepMonitor * -nm_sleep_monitor_get (void) -{ - static NMSleepMonitor *singleton = NULL; - - if (singleton) - return g_object_ref (singleton); - - singleton = NM_SLEEP_MONITOR (g_object_new (NM_TYPE_SLEEP_MONITOR, NULL)); - return singleton; -} +NM_DEFINE_SINGLETON_GETTER (NMSleepMonitor, nm_sleep_monitor_get, NM_TYPE_SLEEP_MONITOR); /* ---------------------------------------------------------------------------------------------------- */