diff options
author | Thomas Haller <thaller@redhat.com> | 2016-04-27 17:01:50 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-04-28 13:00:12 +0200 |
commit | c76eb3e8f7a80b69c570b513ee3eb16bea1b34bd (patch) | |
tree | 250906d12e9b2202671fab63604e520f5fd600c0 | |
parent | b97ae183793e380275f4a6331278b088de9e264f (diff) | |
download | NetworkManager-c76eb3e8f7a80b69c570b513ee3eb16bea1b34bd.tar.gz |
sleep-monitor: merge "nm-sleep-monitor-upower.c" into "nm-sleep-monitor.c"
Both files do very similar things, with "nm-sleep-monitor-upower.c"
being suboptimal, for example by creating the proxy synchronously.
Clean that up in the next steps. Just basic merging for now.
-rw-r--r-- | src/Makefile.am | 8 | ||||
-rw-r--r-- | src/nm-sleep-monitor-upower.c | 134 | ||||
-rw-r--r-- | src/nm-sleep-monitor.c | 64 |
3 files changed, 63 insertions, 143 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index aaf80ac37b..83083cddc0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -439,6 +439,7 @@ libNetworkManager_la_SOURCES = \ nm-rfkill-manager.h \ nm-session-monitor.h \ nm-session-monitor.c \ + nm-sleep-monitor.c \ nm-sleep-monitor.h \ nm-types.h \ nm-core-utils.c \ @@ -447,13 +448,6 @@ libNetworkManager_la_SOURCES = \ NetworkManagerUtils.h -if SUSPEND_RESUME_UPOWER -libNetworkManager_la_SOURCES += nm-sleep-monitor-upower.c -else -# systemd/consolekit suspend/resume used whenever upower is not enabled -libNetworkManager_la_SOURCES += nm-sleep-monitor.c -endif - if WITH_WEXT libNetworkManager_la_SOURCES += \ platform/wifi/wifi-utils-wext.c \ diff --git a/src/nm-sleep-monitor-upower.c b/src/nm-sleep-monitor-upower.c deleted file mode 100644 index 5f0ff24552..0000000000 --- a/src/nm-sleep-monitor-upower.c +++ /dev/null @@ -1,134 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * (C) Copyright 2012 Red Hat, Inc. - * Author: Matthias Clasen <mclasen@redhat.com> - */ - -#include "nm-default.h" - -#include <errno.h> -#include <string.h> -#include <sys/stat.h> - -#include "nm-core-internal.h" - -#include "nm-sleep-monitor.h" - -#define UPOWER_DBUS_SERVICE "org.freedesktop.UPower" - -struct _NMSleepMonitor { - GObject parent_instance; - - GDBusProxy *upower_proxy; -}; - -struct _NMSleepMonitorClass { - GObjectClass parent_class; - - void (*sleeping) (NMSleepMonitor *monitor); - void (*resuming) (NMSleepMonitor *monitor); -}; - - -enum { - SLEEPING, - RESUMING, - LAST_SIGNAL, -}; -static guint signals[LAST_SIGNAL] = {0}; - -G_DEFINE_TYPE (NMSleepMonitor, nm_sleep_monitor, G_TYPE_OBJECT); - -/********************************************************************/ - -static void -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); -} - -static void -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); -} - -static void -nm_sleep_monitor_init (NMSleepMonitor *self) -{ - 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); - - g_clear_object (&self->upower_proxy); - - 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); -} - -NM_DEFINE_SINGLETON_GETTER (NMSleepMonitor, nm_sleep_monitor_get, NM_TYPE_SLEEP_MONITOR); - -/* ---------------------------------------------------------------------------------------------------- */ diff --git a/src/nm-sleep-monitor.c b/src/nm-sleep-monitor.c index 9ed0f9d4fd..13a2234db0 100644 --- a/src/nm-sleep-monitor.c +++ b/src/nm-sleep-monitor.c @@ -29,10 +29,12 @@ #include "nm-sleep-monitor.h" -#if defined (SUSPEND_RESUME_SYSTEMD) == defined (SUSPEND_RESUME_CONSOLEKIT) -#error either define SUSPEND_RESUME_SYSTEMD or SUSPEND_RESUME_CONSOLEKIT +#if (defined (SUSPEND_RESUME_SYSTEMD) + defined (SUSPEND_RESUME_CONSOLEKIT) + defined (SUSPEND_RESUME_UPOWER)) != 1 +#error define one of SUSPEND_RESUME_SYSTEMD, SUSPEND_RESUME_CONSOLEKIT, or SUSPEND_RESUME_UPOWER #endif +#define UPOWER_DBUS_SERVICE "org.freedesktop.UPower" + #ifdef SUSPEND_RESUME_SYSTEMD #define SUSPEND_DBUS_NAME "org.freedesktop.login1" @@ -109,6 +111,24 @@ NM_DEFINE_SINGLETON_GETTER (NMSleepMonitor, nm_sleep_monitor_get, NM_TYPE_SLEEP_ /*****************************************************************************/ +#if defined (SUSPEND_RESUME_UPOWER) + +static void +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); +} + +static void +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); +} + +#else + static void drop_inhibitor (NMSleepMonitor *self) { @@ -245,9 +265,32 @@ on_proxy_acquired (GObject *object, g_free (owner); } +#endif + static void nm_sleep_monitor_init (NMSleepMonitor *self) { +#if defined (SUSPEND_RESUME_UPOWER) + GError *error = NULL; + + self->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->proxy) { + _nm_dbus_signal_connect (self->proxy, "Sleeping", NULL, + G_CALLBACK (upower_sleeping_cb), self); + _nm_dbus_signal_connect (self->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); + } +#else self->inhibit_fd = -1; self->cancellable = g_cancellable_new (); g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM, @@ -257,8 +300,20 @@ nm_sleep_monitor_init (NMSleepMonitor *self) SUSPEND_DBUS_NAME, SUSPEND_DBUS_PATH, SUSPEND_DBUS_INTERFACE, self->cancellable, (GAsyncReadyCallback) on_proxy_acquired, self); +#endif } +#if defined (SUSPEND_RESUME_UPOWER) +static void +finalize (GObject *object) +{ + NMSleepMonitor *self = NM_SLEEP_MONITOR (object); + + g_clear_object (&self->proxy); + + G_OBJECT_CLASS (nm_sleep_monitor_parent_class)->finalize (object); +} +#else static void dispose (GObject *object) { @@ -275,6 +330,7 @@ dispose (GObject *object) G_OBJECT_CLASS (nm_sleep_monitor_parent_class)->dispose (object); } +#endif static void nm_sleep_monitor_class_init (NMSleepMonitorClass *klass) @@ -283,7 +339,11 @@ nm_sleep_monitor_class_init (NMSleepMonitorClass *klass) gobject_class = G_OBJECT_CLASS (klass); +#if defined (SUSPEND_RESUME_UPOWER) + gobject_class->finalize = finalize; +#else gobject_class->dispose = dispose; +#endif signals[SLEEPING] = g_signal_new (NM_SLEEP_MONITOR_SLEEPING, NM_TYPE_SLEEP_MONITOR, |