File gnome-settings-daemon-upower-backport.patch of Package gnome-settings-daemon.391

From: Mike Gorse <mgorse@suse.com>
Date: Tue Dec 10 14:36:49 CST 2013
Subject: [PATCH] Support new libupower-glib API

Support upower 0.99. Based on commits 88de07 and 3ebfd1 from upstream.
---
 plugins/power/gsd-power-manager.c | 6 +++---
diff -ur gnome-settings-daemon-3.10.2.orig/plugins/power/gsd-power-manager.c gnome-settings-daemon-3.10.2/plugins/power/gsd-power-manager.c
--- gnome-settings-daemon-3.10.2.orig/plugins/power/gsd-power-manager.c	2013-11-12 12:33:05.000000000 -0600
+++ gnome-settings-daemon-3.10.2/plugins/power/gsd-power-manager.c	2013-12-10 14:21:08.857851976 -0600
@@ -991,16 +991,6 @@
         guint i;
         GPtrArray *array = NULL;
         UpDevice *device;
-        gboolean ret;
-        GError *error = NULL;
-
-        /* get devices from UPower */
-        ret = up_client_enumerate_devices_sync (manager->priv->up_client, NULL, &error);
-        if (!ret) {
-                g_warning ("failed to get device list: %s", error->message);
-                g_error_free (error);
-                return FALSE;
-        }
 
         engine_recalculate_state (manager);
 
@@ -1031,13 +1021,22 @@
 }
 
 static void
-engine_device_removed_cb (UpClient *client, UpDevice *device, GsdPowerManager *manager)
+engine_device_removed_cb (UpClient *client, const char *object_path, GsdPowerManager *manager)
 {
-        gboolean ret;
-        ret = g_ptr_array_remove (manager->priv->devices_array, device);
-        if (!ret)
-                return;
-        engine_recalculate_state (manager);
+        gboolean ret = FALSE;
+        guint i;
+
+        for (i = 0; i < manager->priv->devices_array->len; i++) {
+                UpDevice *device = g_ptr_array_index (manager->priv->devices_array, i);
+
+                if (g_strcmp0 (object_path, up_device_get_object_path (device)) == 0) {
+                        g_ptr_array_remove_index (manager->priv->devices_array, i);
+                        ret = TRUE;
+                        break;
+                }
+        }
+        if (ret)
+                engine_recalculate_state (manager);
 }
 
 static void
@@ -2172,7 +2172,7 @@
 }
 
 static void
-up_client_changed_cb (UpClient *client, GsdPowerManager *manager)
+lid_state_changed_cb (UpClient *client, GParamSpec *pspec, GsdPowerManager *manager)
 {
         gboolean tmp;
 
@@ -3274,10 +3274,8 @@
                           G_CALLBACK (engine_device_added_cb), manager);
         g_signal_connect (manager->priv->up_client, "device-removed",
                           G_CALLBACK (engine_device_removed_cb), manager);
-        g_signal_connect (manager->priv->up_client, "device-changed",
-                          G_CALLBACK (engine_device_changed_cb), manager);
-        g_signal_connect_after (manager->priv->up_client, "changed",
-                                G_CALLBACK (up_client_changed_cb), manager);
+        g_signal_connect_after (manager->priv->up_client, "notify::lid-is-closed",
+                                G_CALLBACK (lid_state_changed_cb), manager);
         g_signal_connect (manager->priv->up_client, "notify::on-battery",
                           G_CALLBACK (up_client_on_battery_cb), manager);
 
openSUSE Build Service is sponsored by