Merge lp:~cyphermox/powerd/nm-sleep-mode into lp:powerd

Proposed by Mathieu Trudel-Lapierre
Status: Rejected
Rejected by: Mathieu Trudel-Lapierre
Proposed branch: lp:~cyphermox/powerd/nm-sleep-mode
Merge into: lp:powerd
Diff against target: 89 lines (+45/-0)
1 file modified
src/powerd-object.c (+45/-0)
To merge this branch: bzr merge lp:~cyphermox/powerd/nm-sleep-mode
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
Ubuntu Phablet Team Pending
Review via email: mp+237433@code.launchpad.net

Commit message

Allow NetworkManager to go in sleep mode as well when we get to deep sleep; so that network interfaces can be taken down.

Description of the change

Allow NetworkManager to go in sleep mode as well when we get to deep sleep; so that network interfaces can be taken down.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)

Unmerged revisions

143. By Mathieu Trudel-Lapierre

Make powerd notify NetworkManager when going in and out of Sleep mode.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/powerd-object.c'
2--- src/powerd-object.c 2014-08-18 21:33:32 +0000
3+++ src/powerd-object.c 2014-10-07 14:31:46 +0000
4@@ -31,6 +31,7 @@
5 GDBusConnection * system_bus;
6 const gchar * path;
7 ComCanonicalPowerd * skel;
8+ GDBusProxy * nm_proxy;
9 };
10
11 static void powerd_source_class_init (PowerdSourceClass * klass);
12@@ -48,12 +49,26 @@
13 /* This hash table is used to track which dbus names we are watching */
14 static GHashTable *dbus_name_watch_hash = NULL;
15
16+static void nm_proxy_connect_cb(GObject *source_object, GAsyncResult *res,
17+ gpointer user_data);
18+
19 /* Instance */
20 static void
21 powerd_source_init (PowerdSource *self)
22 {
23 self->priv = POWERD_SOURCE_GET_PRIVATE(self);
24 self->priv->system_bus = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL);
25+
26+ g_dbus_proxy_new (self->priv->system_bus,
27+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES
28+ | G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
29+ NULL,
30+ "org.freedesktop.NetworkManager",
31+ "/org/freedesktop/NetworkManager",
32+ "org.freedesktop.NetworkManager",
33+ NULL,
34+ (GAsyncReadyCallback) nm_proxy_connect_cb,
35+ self);
36 return;
37 }
38
39@@ -273,6 +288,19 @@
40 if (!powerd_source)
41 return;
42
43+ g_dbus_proxy_call_sync (POWERD_SOURCE_GET_PRIVATE(powerd_source)->nm_proxy,
44+ "Sleep",
45+ g_variant_new ("(b)", state == POWERD_SYS_STATE_SUSPEND),
46+ G_DBUS_CALL_FLAGS_NONE,
47+ -1,
48+ NULL,
49+ &error);
50+ if (error) {
51+ powerd_warn("Unable to signal a state change to NetworkManager: %s", error->message);
52+ g_error_free(error);
53+ error = NULL;
54+ }
55+
56 powerd_debug("Emitting signal for transition to state %s (%d)",
57 state_to_string(state), state);
58 g_dbus_connection_emit_signal(
59@@ -286,6 +314,7 @@
60 if (error) {
61 powerd_warn("Unable to signal a state change update: %s", error->message);
62 g_error_free(error);
63+ error = NULL;
64 }
65 }
66
67@@ -431,6 +460,22 @@
68 *proxy = unity_proxy;
69 }
70
71+static void nm_proxy_connect_cb(GObject *source_object, GAsyncResult *res,
72+ gpointer user_data)
73+{
74+ PowerdSource *self = POWERD_SOURCE(user_data);
75+ GError *error = NULL;
76+
77+ powerd_debug("nm_proxy_connect_cb");
78+
79+ self->priv->nm_proxy = g_dbus_proxy_new_finish(res, &error);
80+ if (error) {
81+ powerd_warn("%s failed: %s", __func__, error->message);
82+ g_error_free(error);
83+ return;
84+ }
85+}
86+
87 void
88 powerd_name_vanished_cb(GDBusConnection *connection,
89 const gchar *name,

Subscribers

People subscribed via source and target branches