[mutter] events: Clean up event replay code
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] events: Clean up event replay code
- Date: Thu, 8 May 2014 19:35:43 +0000 (UTC)
commit d9b72b0f43958db2be47b3ff56cfb350f2101875
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Thu May 8 15:09:20 2014 -0400
events: Clean up event replay code
src/core/events.c | 41 +++++++++++++++++++++++++++--------------
1 files changed, 27 insertions(+), 14 deletions(-)
---
diff --git a/src/core/events.c b/src/core/events.c
index 28adfe7..e68914c 100644
--- a/src/core/events.c
+++ b/src/core/events.c
@@ -1931,6 +1931,7 @@ meta_display_handle_event (MetaDisplay *display,
ClutterModifierType grab_mask;
gboolean unmodified;
gboolean fully_modified;
+ gboolean handled = FALSE;
grab_mask = display->window_grab_modifiers;
if (g_getenv ("MUTTER_DEBUG_BUTTON_GRABS"))
@@ -1985,18 +1986,7 @@ meta_display_handle_event (MetaDisplay *display,
*/
display->allow_terminal_deactivation = TRUE;
- meta_verbose ("Allowing events time %u\n",
- (unsigned int)event->button.time);
-
- {
- MetaBackend *backend = meta_get_backend ();
- if (META_IS_BACKEND_X11 (backend))
- {
- Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend));
- XIAllowEvents (xdisplay, clutter_input_device_get_device_id (event->button.device),
- XIReplayDevice, event->button.time);
- }
- }
+ /* Don't handle the event so it's sent back to clients. */
}
else if (fully_modified && (int) event->button.button == meta_prefs_get_mouse_button_resize ())
{
@@ -2046,7 +2036,7 @@ meta_display_handle_event (MetaDisplay *display,
event->button.x,
event->button.y);
}
- bypass_wayland = TRUE;
+ handled = TRUE;
}
else if (fully_modified && (int) event->button.button == meta_prefs_get_mouse_button_menu ())
{
@@ -2057,7 +2047,7 @@ meta_display_handle_event (MetaDisplay *display,
event->button.y,
event->button.button,
event->any.time);
- bypass_wayland = TRUE;
+ handled = TRUE;
}
else if (fully_modified && (int) event->button.button == 1)
{
@@ -2075,8 +2065,31 @@ meta_display_handle_event (MetaDisplay *display,
event->button.x,
event->button.y);
}
+ handled = TRUE;
+ }
+
+ /* Under X11, we have a Sync grab and in order to send it back to
+ * clients, we have to explicitly replay it.
+ *
+ * Under Wayland, we retrieve all events and we have to make sure
+ * to filter them out from Wayland clients.
+ */
+ if (handled)
+ {
bypass_wayland = TRUE;
}
+ else
+ {
+ MetaBackend *backend = meta_get_backend ();
+ if (META_IS_BACKEND_X11 (backend))
+ {
+ Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend));
+ meta_verbose ("Allowing events time %u\n",
+ (unsigned int)event->button.time);
+ XIAllowEvents (xdisplay, clutter_event_get_device_id (event),
+ XIReplayDevice, event->button.time);
+ }
+ }
}
out:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]