summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Rostovtsev <tetromino@gmail.com>2011-09-07 17:54:49 -0400
committerAlexandre Rostovtsev <tetromino@gmail.com>2011-09-07 18:08:54 -0400
commit8395db0abaf83803e55fda6d5bfab5f433d3227b (patch)
tree1e05a0c32ed4d4b3863b09c4df2aa9ed7c4f8024 /gnome-base/gnome-settings-daemon/files
parentwww-client/epiphany: 3.0.3 → 3.1.91.1 (diff)
downloadgnome-8395db0abaf83803e55fda6d5bfab5f433d3227b.tar.gz
gnome-8395db0abaf83803e55fda6d5bfab5f433d3227b.tar.bz2
gnome-8395db0abaf83803e55fda6d5bfab5f433d3227b.zip
gnome-base/gnome-settings-daemon: 3.1.90 → 3.1.91
Version bump with numerous bugfixes (and more in upstream patches that will be in next release).
Diffstat (limited to 'gnome-base/gnome-settings-daemon/files')
-rw-r--r--gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-disabled-devices.patch114
-rw-r--r--gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-disabled-touchpad.patch147
-rw-r--r--gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-divide-by-zero.patch29
-rw-r--r--gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-exit-value.patch46
-rw-r--r--gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-gconf-leak.patch20
5 files changed, 356 insertions, 0 deletions
diff --git a/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-disabled-devices.patch b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-disabled-devices.patch
new file mode 100644
index 00000000..073d41a3
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-disabled-devices.patch
@@ -0,0 +1,114 @@
+From 3dc1f72b297bfedf39cdb1c0e11f0b8df8269737 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Tue, 06 Sep 2011 19:09:25 +0000
+Subject: common: Add helper to list disabled devices
+
+---
+diff --git a/plugins/common/gsd-input-helper.c b/plugins/common/gsd-input-helper.c
+index 2d82722..a2a0451 100644
+--- a/plugins/common/gsd-input-helper.c
++++ b/plugins/common/gsd-input-helper.c
+@@ -238,7 +238,7 @@ set_device_enabled (int device_id,
+
+ gdk_error_trap_push ();
+
+- value = enabled;
++ value = enabled ? 1 : 0;
+ XIChangeProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
+ device_id, prop, XA_INTEGER, 8, PropModeReplace, &value, 1);
+
+@@ -320,3 +320,37 @@ run_custom_command (GdkDevice *device,
+
+ return (exit_status == 0);
+ }
++
++GList *
++get_disabled_devices (GdkDeviceManager *manager)
++{
++ XDeviceInfo *device_info;
++ gint n_devices;
++ guint i;
++ GList *ret;
++
++ ret = NULL;
++
++ device_info = XListInputDevices (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &n_devices);
++ if (device_info == NULL)
++ return ret;
++
++ for (i = 0; i < n_devices; i++) {
++ GdkDevice *device;
++
++ /* Ignore core devices */
++ if (device_info[i].use == IsXKeyboard ||
++ device_info[i].use == IsXPointer)
++ continue;
++
++ /* Check whether the device is actually available */
++ device = gdk_x11_device_manager_lookup (manager, device_info[i].id);
++ g_message ("checking whether we have a device for %d: %s", device_info[i].id, device ? "yes" : "no");
++ if (device != NULL)
++ continue;
++
++ ret = g_list_prepend (ret, GINT_TO_POINTER (device_info[i].id));
++ }
++
++ return ret;
++}
+diff --git a/plugins/common/gsd-input-helper.h b/plugins/common/gsd-input-helper.h
+index 736c452..48bc249 100644
+--- a/plugins/common/gsd-input-helper.h
++++ b/plugins/common/gsd-input-helper.h
+@@ -69,6 +69,8 @@ gboolean device_set_property (XDevice *xdevice,
+ gboolean run_custom_command (GdkDevice *device,
+ CustomCommand command);
+
++GList * get_disabled_devices (GdkDeviceManager *manager);
++
+ G_END_DECLS
+
+ #endif /* __GSD_INPUT_HELPER_H */
+diff --git a/plugins/common/test-input-helper.c b/plugins/common/test-input-helper.c
+index 500c624..bbdd30b 100644
+--- a/plugins/common/test-input-helper.c
++++ b/plugins/common/test-input-helper.c
+@@ -29,6 +29,28 @@
+
+ #include "gsd-input-helper.h"
+
++static void
++print_disabled_devices (void)
++{
++ GList *devices, *l;
++ GdkDeviceManager *manager;
++
++ manager = gdk_display_get_device_manager (gdk_display_get_default ());
++
++ devices = get_disabled_devices (manager);
++ g_print ("Disabled devices:\t\t\t");
++ if (devices == NULL) {
++ g_print ("no\n");
++ return;
++ }
++
++ for (l = devices; l != NULL; l = l->next) {
++ g_print ("%d ", GPOINTER_TO_INT (l->data));
++ }
++ g_list_free (devices);
++ g_print ("\n");
++}
++
+ int main (int argc, char **argv)
+ {
+ gboolean supports_xinput;
+@@ -66,6 +88,8 @@ int main (int argc, char **argv)
+ return 1;
+ }
+
++ print_disabled_devices ();
++
+ for (i = 0; i < n_devices; i++) {
+ XDevice *device;
+
+--
+cgit v0.9.0.2
diff --git a/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-disabled-touchpad.patch b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-disabled-touchpad.patch
new file mode 100644
index 00000000..2acec446
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-disabled-touchpad.patch
@@ -0,0 +1,147 @@
+From d293616f41ce5acc7a0f1d9e12907ba9edbf34b3 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Tue, 6 Sep 2011 20:11:54 +0100
+Subject: [PATCH] mouse: Try harder to re-enable devices
+
+Look for disabled devices when we need to re-enable
+devices as they won't be listed in the list of devices
+given by GdkDeviceManager (as per bug 658379)
+
+https://bugzilla.gnome.org/show_bug.cgi?id=656397
+
+[Alexandre Rostovtsev <tetromino@gmail.com>: backport to 3.1.90]
+---
+ plugins/mouse/gsd-mouse-manager.c | 69 +++++++++++++++++++++++++++++++++---
+ 1 files changed, 63 insertions(+), 6 deletions(-)
+
+diff --git a/plugins/mouse/gsd-mouse-manager.c b/plugins/mouse/gsd-mouse-manager.c
+index 843a57e..d48b27c 100644
+--- a/plugins/mouse/gsd-mouse-manager.c
++++ b/plugins/mouse/gsd-mouse-manager.c
+@@ -733,14 +733,15 @@ set_edge_scroll (GdkDevice *device,
+ }
+
+ static void
+-set_touchpad_enabled (GdkDevice *device,
+- gboolean state)
++set_touchpad_disabled (GdkDevice *device)
+ {
+ int id;
+ XDevice *xdevice;
+
+ g_object_get (G_OBJECT (device), "device-id", &id, NULL);
+
++ g_debug ("Trying to set device disabled for \"%s\" (%d)", gdk_device_get_name (device), id);
++
+ xdevice = open_gdk_device (device);
+ if (xdevice == NULL)
+ return;
+@@ -750,8 +751,35 @@ set_touchpad_enabled (GdkDevice *device,
+ return;
+ }
+
+- if (set_device_enabled (id, state) == FALSE)
+- g_warning ("Error %s device \"%s\"", (state) ? "enabling" : "disabling", gdk_device_get_name (device));
++ if (set_device_enabled (id, FALSE) == FALSE)
++ g_warning ("Error disabling device \"%s\" (%d)", gdk_device_get_name (device), id);
++ else
++ g_debug ("Disabled device \"%s\" (%d)", gdk_device_get_name (device), id);
++
++ XCloseDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdevice);
++}
++
++static void
++set_touchpad_enabled (int id)
++{
++ XDevice *xdevice;
++
++ g_debug ("Trying to set device enabled for %d", id);
++
++ gdk_error_trap_push ();
++ xdevice = XOpenDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), id);
++ if (gdk_error_trap_pop () != 0)
++ return;
++
++ if (!device_is_touchpad (xdevice)) {
++ XCloseDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdevice);
++ return;
++ }
++
++ if (set_device_enabled (id, TRUE) == FALSE)
++ g_warning ("Error enabling device \"%d\"", id);
++ else
++ g_debug ("Enabled device %d", id);
+
+ XCloseDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdevice);
+ }
+@@ -867,7 +895,8 @@ set_mouse_settings (GsdMouseManager *manager,
+ set_tap_to_click (device, g_settings_get_boolean (manager->priv->touchpad_settings, KEY_TAP_TO_CLICK), touchpad_left_handed);
+ set_edge_scroll (device, g_settings_get_enum (manager->priv->touchpad_settings, KEY_SCROLL_METHOD));
+ set_horiz_scroll (device, g_settings_get_boolean (manager->priv->touchpad_settings, KEY_PAD_HORIZ_SCROLL));
+- set_touchpad_enabled (device, g_settings_get_boolean (manager->priv->touchpad_settings, KEY_TOUCHPAD_ENABLED));
++ if (g_settings_get_boolean (manager->priv->touchpad_settings, KEY_TOUCHPAD_ENABLED) == FALSE)
++ set_touchpad_disabled (device);
+ }
+
+ static void
+@@ -927,6 +956,8 @@ touchpad_callback (GSettings *settings,
+ for (l = devices; l != NULL; l = l->next) {
+ GdkDevice *device = l->data;
+
++ g_message ("checking on device %s", gdk_device_get_name (device));
++
+ if (device_is_blacklisted (manager, device))
+ return;
+
+@@ -939,7 +970,10 @@ touchpad_callback (GSettings *settings,
+ } else if (g_str_equal (key, KEY_PAD_HORIZ_SCROLL)) {
+ set_horiz_scroll (device, g_settings_get_boolean (settings, key));
+ } else if (g_str_equal (key, KEY_TOUCHPAD_ENABLED)) {
+- set_touchpad_enabled (device, g_settings_get_boolean (settings, key));
++ if (g_settings_get_boolean (settings, key) == FALSE)
++ set_touchpad_disabled (device);
++ else
++ set_touchpad_enabled (gdk_x11_device_get_id (device));
+ } else if (g_str_equal (key, KEY_MOTION_ACCELERATION) ||
+ g_str_equal (key, KEY_MOTION_THRESHOLD)) {
+ set_motion (manager, device);
+@@ -950,6 +984,18 @@ touchpad_callback (GSettings *settings,
+ }
+ }
+ g_list_free (devices);
++
++ if (g_str_equal (key, KEY_TOUCHPAD_ENABLED) &&
++ g_settings_get_boolean (settings, key)) {
++ devices = get_disabled_devices (manager->priv->device_manager);
++ for (l = devices; l != NULL; l = l->next) {
++ int device_id;
++
++ device_id = GPOINTER_TO_INT (l->data);
++ set_touchpad_enabled (device_id);
++ }
++ g_list_free (devices);
++ }
+ }
+
+ static void
+@@ -1056,6 +1102,17 @@ gsd_mouse_manager_idle_cb (GsdMouseManager *manager)
+ }
+ g_list_free (devices);
+
++ if (g_settings_get_boolean (manager->priv->touchpad_settings, KEY_TOUCHPAD_ENABLED)) {
++ devices = get_disabled_devices (manager->priv->device_manager);
++ for (l = devices; l != NULL; l = l->next) {
++ int device_id;
++
++ device_id = GPOINTER_TO_INT (l->data);
++ set_touchpad_enabled (device_id);
++ }
++ g_list_free (devices);
++ }
++
+ gnome_settings_profile_end (NULL);
+
+ manager->priv->start_idle_id = 0;
+--
+1.7.6.1
+
diff --git a/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-divide-by-zero.patch b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-divide-by-zero.patch
new file mode 100644
index 00000000..be371e20
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-divide-by-zero.patch
@@ -0,0 +1,29 @@
+From 5be38144f19d1479c908039ffc2991052b06111b Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Wed, 07 Sep 2011 15:18:46 +0000
+Subject: power: Make ABS_TO_PERCENTAGE warn on invalid input
+
+Works around this problem, whilst producing a warning.
+https://bugzilla.gnome.org/show_bug.cgi?id=657364
+---
+diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
+index a67c998..80aba9d 100644
+--- a/plugins/power/gsd-power-manager.c
++++ b/plugins/power/gsd-power-manager.c
+@@ -126,7 +126,13 @@ static const gchar introspection_xml[] =
+ #define BRIGHTNESS_STEP_AMOUNT(max) ((max) < 20 ? 1 : (max) / 20)
+
+ /* take a discrete value with offset and convert to percentage */
+-#define ABS_TO_PERCENTAGE(min, max, value) (((value - min) * 100) / (max - min))
++static int
++abs_to_percentage (int min, int max, int value)
++{
++ g_return_val_if_fail (max > min, -1);
++ return (((value - min) * 100) / (max - min));
++}
++#define ABS_TO_PERCENTAGE(min, max, value) abs_to_percentage(min, max, value)
+ #define PERCENTAGE_TO_ABS(min, max, value) (min + (((max - min) * value) / 100))
+
+ #define GSD_POWER_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_POWER_MANAGER, GsdPowerManagerPrivate))
+--
+cgit v0.9.0.2
diff --git a/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-exit-value.patch b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-exit-value.patch
new file mode 100644
index 00000000..a75fea65
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-exit-value.patch
@@ -0,0 +1,46 @@
+From 8c61c54ba6248891541d5d849d1d9871ad3c4940 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Wed, 07 Sep 2011 15:31:13 +0000
+Subject: power: Correctly check for helper exit status
+
+By using WEXITSTATUS() and not relying solely on the
+return value of g_spawn_command_line_sync().
+
+https://bugzilla.gnome.org/show_bug.cgi?id=657364
+---
+diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
+index 80aba9d..af10b4f 100644
+--- a/plugins/power/gsd-power-manager.c
++++ b/plugins/power/gsd-power-manager.c
+@@ -2254,11 +2254,11 @@ backlight_helper_get_value (const gchar *argument, GError **error)
+ NULL,
+ &exit_status,
+ error);
+- if (!ret)
+- goto out;
+-
+ g_debug ("executed %s retval: %i", command, exit_status);
+
++ if (!ret || WEXITSTATUS (exit_status) != 0)
++ goto out;
++
+ /* parse */
+ value = g_ascii_strtoll (stdout_data, &endptr, 10);
+
+@@ -2322,10 +2322,12 @@ backlight_helper_set_value (const gchar *argument,
+ NULL,
+ &exit_status,
+ error);
+- if (!ret)
+- goto out;
+
+ g_debug ("executed %s retval: %i", command, exit_status);
++
++ if (!ret || WEXITSTATUS (exit_status) != 0)
++ goto out;
++
+ out:
+ g_free (command);
+ return ret;
+--
+cgit v0.9.0.2
diff --git a/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-gconf-leak.patch b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-gconf-leak.patch
new file mode 100644
index 00000000..09fb2d24
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.1.91-gconf-leak.patch
@@ -0,0 +1,20 @@
+From 9b534448f26d51ce1ac80b49483a621ac3a9540f Mon Sep 17 00:00:00 2001
+From: Rodrigo Moya <rodrigo@gnome-db.org>
+Date: Tue, 06 Sep 2011 10:19:08 +0000
+Subject: gconf: Plug a memory leak
+
+---
+diff --git a/plugins/gconf/gsd-gconf-manager.c b/plugins/gconf/gsd-gconf-manager.c
+index 7723e35..20c94b1 100644
+--- a/plugins/gconf/gsd-gconf-manager.c
++++ b/plugins/gconf/gsd-gconf-manager.c
+@@ -138,6 +138,7 @@ gsd_gconf_manager_start (GsdGconfManager *manager, GError **error)
+ /* Free all memory */
+ g_free (path);
+ g_strfreev (groups);
++ g_key_file_free (key_file);
+
+ result = TRUE;
+ }
+--
+cgit v0.9.0.2