[mutter] keybindings: always acknowledge events to the X server



commit 8c17b670fb61d2fbfaaf8f47448d0e48bfa7f29e
Author: Alban Crequy <alban crequy collabora co uk>
Date:   Mon Aug 5 16:00:32 2013 +0100

    keybindings: always acknowledge events to the X server
    
    https://bugzilla.gnome.org/show_bug.cgi?id=666101

 src/core/keybindings.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index 8439ea8..7f58334 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -1965,6 +1965,23 @@ process_overlay_key (MetaDisplay *display,
             return TRUE;
           meta_display_overlay_key_activate (display);
         }
+      else
+        {
+          /* In some rare race condition, mutter might not receive the Super_L
+           * KeyRelease event because:
+           * - the compositor might end the modal mode and call XIUngrabDevice
+           *   while the key is still down
+           * - passive grabs are only activated on KeyPress and not KeyRelease.
+           *
+           * In this case, display->overlay_key_only_pressed might be wrong.
+           * Mutter still ought to acknowledge events, otherwise the X server
+           * will not send the next events.
+           *
+           * https://bugzilla.gnome.org/show_bug.cgi?id=666101
+           */
+          XIAllowEvents (display->xdisplay, event->deviceid,
+                         XIAsyncDevice, event->time);
+        }
 
       return TRUE;
     }


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