gnome-settings-daemon/gnome-settings-daemon-upower-backport.patch
2013-12-23 17:51:21 +00:00

77 lines
2.9 KiB
Diff

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;
@@ -3276,8 +3276,8 @@
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);