[gnome-control-center] power: Port to libnm 1.2



commit 8400d3ed81d15c7406e14908437033a72348fd95
Author: Bastien Nocera <hadess hadess net>
Date:   Mon May 2 15:17:20 2016 +0200

    power: Port to libnm 1.2
    
    And make the NMClient instantiation async now that the API permits it.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=765910

 configure.ac                  |    1 +
 panels/power/cc-power-panel.c |   55 ++++++++++++++++++++++++++++++++--------
 2 files changed, 45 insertions(+), 11 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 7bb613d..d98a1c6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -142,6 +142,7 @@ PKG_CHECK_MODULES(NETWORK_PANEL, $COMMON_MODULES gmodule-2.0
 PKG_CHECK_MODULES(NOTIFICATIONS_PANEL, $COMMON_MODULES)
 PKG_CHECK_MODULES(ONLINE_ACCOUNTS_PANEL, $COMMON_MODULES goa-1.0 goa-backend-1.0 >= $GOA_REQUIRED_VERSION)
 PKG_CHECK_MODULES(POWER_PANEL, $COMMON_MODULES upower-glib >= 0.99.0
+                  libnm >= $NETWORK_MANAGER_REQUIRED_VERSION
                   gnome-settings-daemon >= $GSD_REQUIRED_VERSION)
 PKG_CHECK_MODULES(COLOR_PANEL, $COMMON_MODULES
                   colord >= $COLORD_REQUIRED_VERSION
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c
index 56e8204..ce6b10f 100644
--- a/panels/power/cc-power-panel.c
+++ b/panels/power/cc-power-panel.c
@@ -26,7 +26,7 @@
 #include <gnome-settings-daemon/gsd-enums.h>
 
 #ifdef HAVE_NETWORK_MANAGER
-#include <nm-client.h>
+#include <NetworkManager.h>
 #endif
 
 #include "shell/list-box-helper.h"
@@ -1295,7 +1295,7 @@ has_wifi_devices (NMClient *client)
   NMDevice *device;
   gint i;
 
-  if (!nm_client_get_manager_running (client))
+  if (!nm_client_get_nm_running (client))
     return FALSE;
 
   devices = nm_client_get_devices (client);
@@ -1336,7 +1336,7 @@ has_mobile_devices (NMClient *client)
   NMDevice *device;
   gint i;
 
-  if (!nm_client_get_manager_running (client))
+  if (!nm_client_get_nm_running (client))
     return FALSE;
 
   devices = nm_client_get_devices (client);
@@ -1425,6 +1425,46 @@ nm_device_changed (NMClient     *client,
   gtk_widget_set_visible (priv->mobile_row, has_mobile_devices (priv->nm_client));
 }
 
+static void
+nm_client_ready_cb (GObject *source_object,
+                    GAsyncResult *res,
+                    gpointer user_data)
+{
+  CcPowerPanel *self;
+  CcPowerPanelPrivate *priv;
+  NMClient *client;
+  GError *error = NULL;
+
+  client = nm_client_new_finish (res, &error);
+  if (!client)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        {
+          g_warning ("Failed to create NetworkManager client: %s",
+                     error->message);
+
+          self = user_data;
+          gtk_widget_set_sensitive (self->priv->wifi_row, FALSE);
+          gtk_widget_set_sensitive (self->priv->mobile_row, FALSE);
+        }
+      g_error_free (error);
+      return;
+    }
+
+  self = user_data;
+  priv = self->priv;
+  priv->nm_client = client;
+
+  g_signal_connect (priv->nm_client, "notify",
+                    G_CALLBACK (nm_client_state_changed), self);
+  g_signal_connect (priv->nm_client, "device-added",
+                    G_CALLBACK (nm_device_changed), self);
+  g_signal_connect (priv->nm_client, "device-removed",
+                    G_CALLBACK (nm_device_changed), self);
+
+  nm_device_changed (priv->nm_client, NULL, self);
+}
+
 #endif
 
 static gboolean
@@ -1835,14 +1875,7 @@ add_power_saving_section (CcPowerPanel *self)
   g_signal_connect (G_OBJECT (priv->mobile_switch), "notify::active",
                     G_CALLBACK (mobile_switch_changed), self);
 
-  priv->nm_client = nm_client_new ();
-  g_signal_connect (priv->nm_client, "notify",
-                    G_CALLBACK (nm_client_state_changed), self);
-  g_signal_connect (priv->nm_client, "device-added",
-                    G_CALLBACK (nm_device_changed), self);
-  g_signal_connect (priv->nm_client, "device-removed",
-                    G_CALLBACK (nm_device_changed), self);
-  nm_device_changed (priv->nm_client, NULL, self);
+  nm_client_new_async (priv->cancellable, nm_client_ready_cb, self);
 
   g_signal_connect (G_OBJECT (priv->wifi_switch), "notify::active",
                     G_CALLBACK (wifi_switch_changed), self);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]