summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-2.30.1-XF86Display.patch')
-rw-r--r--gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-2.30.1-XF86Display.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-2.30.1-XF86Display.patch b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-2.30.1-XF86Display.patch
new file mode 100644
index 000000000000..d69309871be0
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-2.30.1-XF86Display.patch
@@ -0,0 +1,51 @@
+From d5e0550961e337a8ce08e41534bd26f7daab79be Mon Sep 17 00:00:00 2001
+From: Chase Douglas <chase.douglas@ubuntu.com>
+Date: Thu, 06 May 2010 20:51:14 +0000
+Subject: bgo#610482 - Adjust XF86Display timestamps if they are out of order with RANDR timestamps
+
+Some laptops seem to send XF86Display keypress events when you unsuspend them,
+probably as a way to 'make Windows work'. For some reason these events
+come with timestamps that are out of order with respect to the
+RANDR timestamps. So we'll adjust the keypress timestamps so that
+the events can be processed.
+
+Signed-off-by: Federico Mena Quintero <federico@novell.com>
+---
+diff --git a/plugins/xrandr/gsd-xrandr-manager.c b/plugins/xrandr/gsd-xrandr-manager.c
+index e78eb6b..bcaa53b 100644
+--- a/plugins/xrandr/gsd-xrandr-manager.c
++++ b/plugins/xrandr/gsd-xrandr-manager.c
+@@ -988,6 +988,8 @@ handle_fn_f7 (GsdXrandrManager *mgr, guint32 timestamp)
+ gnome_rr_config_free (current);
+
+ if (priv->fn_f7_configs) {
++ guint32 server_timestamp;
++
+ mgr->priv->current_fn_f7_config++;
+
+ if (priv->fn_f7_configs[mgr->priv->current_fn_f7_config] == NULL)
+@@ -999,6 +1001,22 @@ handle_fn_f7 (GsdXrandrManager *mgr, guint32 timestamp)
+
+ g_debug ("applying");
+
++ /* See https://bugzilla.gnome.org/show_bug.cgi?id=610482
++ *
++ * Sometimes we'll get two rapid XF86Display keypress events,
++ * but their timestamps will be out of order with respect to the
++ * RANDR timestamps. This *may* be due to stupid BIOSes sending
++ * out display-switch keystrokes "to make Windows work".
++ *
++ * The X server will error out if the timestamp provided is
++ * older than a previous change configuration timestamp. We
++ * assume here that we do want this event to go through still,
++ * since kernel timestamps may be skewed wrt the X server.
++ */
++ gnome_rr_screen_get_timestamps (screen, NULL, &server_timestamp);
++ if (timestamp < server_timestamp)
++ timestamp = server_timestamp;
++
+ apply_configuration_and_display_error (mgr, priv->fn_f7_configs[mgr->priv->current_fn_f7_config], timestamp);
+ }
+ else {
+--
+cgit v0.8.3.1