diff options
Diffstat (limited to 'src/nm-sleep-monitor-upower.c')
| -rw-r--r-- | src/nm-sleep-monitor-upower.c | 124 |
1 files changed, 60 insertions, 64 deletions
diff --git a/src/nm-sleep-monitor-upower.c b/src/nm-sleep-monitor-upower.c index 0c46ae10..c65609cf 100644 --- a/src/nm-sleep-monitor-upower.c +++ b/src/nm-sleep-monitor-upower.c @@ -22,33 +22,31 @@ #include <errno.h> #include <string.h> #include <sys/stat.h> -#include <dbus/dbus-glib.h> -#include <gio/gio.h> -#include "nm-logging.h" -#include "nm-dbus-manager.h" +#include "nm-default.h" +#include "nm-core-internal.h" #include "nm-sleep-monitor.h" #define UPOWER_DBUS_SERVICE "org.freedesktop.UPower" struct _NMSleepMonitor { - GObject parent_instance; + GObject parent_instance; - DBusGProxy *upower_proxy; + GDBusProxy *upower_proxy; }; struct _NMSleepMonitorClass { - GObjectClass parent_class; + GObjectClass parent_class; - void (*sleeping) (NMSleepMonitor *monitor); - void (*resuming) (NMSleepMonitor *monitor); + void (*sleeping) (NMSleepMonitor *monitor); + void (*resuming) (NMSleepMonitor *monitor); }; enum { - SLEEPING, - RESUMING, - LAST_SIGNAL, + SLEEPING, + RESUMING, + LAST_SIGNAL, }; static guint signals[LAST_SIGNAL] = {0}; @@ -57,80 +55,78 @@ G_DEFINE_TYPE (NMSleepMonitor, nm_sleep_monitor, G_TYPE_OBJECT); /********************************************************************/ static void -upower_sleeping_cb (DBusGProxy *proxy, gpointer user_data) +upower_sleeping_cb (GDBusProxy *proxy, gpointer user_data) { - nm_log_dbg (LOGD_SUSPEND, "Received UPower sleeping signal"); - g_signal_emit (user_data, signals[SLEEPING], 0); + nm_log_dbg (LOGD_SUSPEND, "Received UPower sleeping signal"); + g_signal_emit (user_data, signals[SLEEPING], 0); } static void -upower_resuming_cb (DBusGProxy *proxy, gpointer user_data) +upower_resuming_cb (GDBusProxy *proxy, gpointer user_data) { - nm_log_dbg (LOGD_SUSPEND, "Received UPower resuming signal"); - g_signal_emit (user_data, signals[RESUMING], 0); + nm_log_dbg (LOGD_SUSPEND, "Received UPower resuming signal"); + g_signal_emit (user_data, signals[RESUMING], 0); } static void nm_sleep_monitor_init (NMSleepMonitor *self) { - DBusGConnection *bus; - - bus = nm_dbus_manager_get_connection (nm_dbus_manager_get ()); - self->upower_proxy = dbus_g_proxy_new_for_name (bus, - UPOWER_DBUS_SERVICE, - "/org/freedesktop/UPower", - "org.freedesktop.UPower"); - if (self->upower_proxy) { - dbus_g_proxy_add_signal (self->upower_proxy, "Sleeping", G_TYPE_INVALID); - dbus_g_proxy_connect_signal (self->upower_proxy, "Sleeping", - G_CALLBACK (upower_sleeping_cb), - self, NULL); - - dbus_g_proxy_add_signal (self->upower_proxy, "Resuming", G_TYPE_INVALID); - dbus_g_proxy_connect_signal (self->upower_proxy, "Resuming", - G_CALLBACK (upower_resuming_cb), - self, NULL); - } else - nm_log_warn (LOGD_SUSPEND, "could not initialize UPower D-Bus proxy"); + GError *error = NULL; + + self->upower_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, + NULL, + UPOWER_DBUS_SERVICE, + "/org/freedesktop/UPower", + "org.freedesktop.UPower", + NULL, &error); + if (self->upower_proxy) { + _nm_dbus_signal_connect (self->upower_proxy, "Sleeping", NULL, + G_CALLBACK (upower_sleeping_cb), self); + _nm_dbus_signal_connect (self->upower_proxy, "Resuming", NULL, + G_CALLBACK (upower_resuming_cb), self); + } else { + nm_log_warn (LOGD_SUSPEND, "could not initialize UPower D-Bus proxy: %s", error->message); + g_error_free (error); + } } static void finalize (GObject *object) { - NMSleepMonitor *self = NM_SLEEP_MONITOR (object); + NMSleepMonitor *self = NM_SLEEP_MONITOR (object); - if (self->upower_proxy) - g_object_unref (self->upower_proxy); + g_clear_object (&self->upower_proxy); - if (G_OBJECT_CLASS (nm_sleep_monitor_parent_class)->finalize != NULL) - G_OBJECT_CLASS (nm_sleep_monitor_parent_class)->finalize (object); + G_OBJECT_CLASS (nm_sleep_monitor_parent_class)->finalize (object); } static void nm_sleep_monitor_class_init (NMSleepMonitorClass *klass) { - GObjectClass *gobject_class; - - gobject_class = G_OBJECT_CLASS (klass); - - gobject_class->finalize = finalize; - - signals[SLEEPING] = g_signal_new (NM_SLEEP_MONITOR_SLEEPING, - NM_TYPE_SLEEP_MONITOR, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSleepMonitorClass, sleeping), - NULL, /* accumulator */ - NULL, /* accumulator data */ - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - signals[RESUMING] = g_signal_new (NM_SLEEP_MONITOR_RESUMING, - NM_TYPE_SLEEP_MONITOR, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSleepMonitorClass, resuming), - NULL, /* accumulator */ - NULL, /* accumulator data */ - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); + GObjectClass *gobject_class; + + gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = finalize; + + signals[SLEEPING] = g_signal_new (NM_SLEEP_MONITOR_SLEEPING, + NM_TYPE_SLEEP_MONITOR, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (NMSleepMonitorClass, sleeping), + NULL, /* accumulator */ + NULL, /* accumulator data */ + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + signals[RESUMING] = g_signal_new (NM_SLEEP_MONITOR_RESUMING, + NM_TYPE_SLEEP_MONITOR, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (NMSleepMonitorClass, resuming), + NULL, /* accumulator */ + NULL, /* accumulator data */ + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); } NM_DEFINE_SINGLETON_GETTER (NMSleepMonitor, nm_sleep_monitor_get, NM_TYPE_SLEEP_MONITOR); |