events: Remove our workarounds for broken libXi versions

We now depend on a recent enough libXi that fixes broken locking in
XIGrabTouchBegin, so we don't need to carry this around anymore.
This commit is contained in:
Jasper St. Pierre 2014-09-16 20:09:13 -06:00
parent be85ead2f8
commit 35dd1e644d

View File

@ -678,8 +678,7 @@ meta_spew_event (MetaDisplay *display,
static void static void
handle_window_focus_event (MetaDisplay *display, handle_window_focus_event (MetaDisplay *display,
MetaWindow *window, MetaWindow *window,
XIEnterEvent *event, XIEnterEvent *event)
unsigned long serial)
{ {
MetaWindow *focus_window; MetaWindow *focus_window;
#ifdef WITH_VERBOSE_MODE #ifdef WITH_VERBOSE_MODE
@ -758,7 +757,7 @@ handle_window_focus_event (MetaDisplay *display,
if (event->evtype == XI_FocusIn) if (event->evtype == XI_FocusIn)
{ {
display->server_focus_window = event->event; display->server_focus_window = event->event;
display->server_focus_serial = serial; display->server_focus_serial = event->serial;
focus_window = window; focus_window = window;
} }
else if (event->evtype == XI_FocusOut) else if (event->evtype == XI_FocusOut)
@ -772,7 +771,7 @@ handle_window_focus_event (MetaDisplay *display,
} }
display->server_focus_window = None; display->server_focus_window = None;
display->server_focus_serial = serial; display->server_focus_serial = event->serial;
focus_window = NULL; focus_window = NULL;
} }
else else
@ -813,8 +812,7 @@ crossing_serial_is_ignored (MetaDisplay *display,
static gboolean static gboolean
handle_input_xevent (MetaDisplay *display, handle_input_xevent (MetaDisplay *display,
XIEvent *input_event, XIEvent *input_event)
gulong serial)
{ {
XIEnterEvent *enter_event = (XIEnterEvent *) input_event; XIEnterEvent *enter_event = (XIEnterEvent *) input_event;
Window modified; Window modified;
@ -851,7 +849,7 @@ handle_input_xevent (MetaDisplay *display,
/* Check if we've entered a window; do this even if window->has_focus to /* Check if we've entered a window; do this even if window->has_focus to
* avoid races. * avoid races.
*/ */
if (window && !crossing_serial_is_ignored (display, serial) && if (window && !crossing_serial_is_ignored (display, input_event->serial) &&
enter_event->mode != XINotifyGrab && enter_event->mode != XINotifyGrab &&
enter_event->mode != XINotifyUngrab && enter_event->mode != XINotifyUngrab &&
enter_event->detail != XINotifyInferior && enter_event->detail != XINotifyInferior &&
@ -876,7 +874,7 @@ handle_input_xevent (MetaDisplay *display,
break; break;
case XI_FocusIn: case XI_FocusIn:
case XI_FocusOut: case XI_FocusOut:
handle_window_focus_event (display, window, enter_event, serial); handle_window_focus_event (display, window, enter_event);
if (!window) if (!window)
{ {
/* Check if the window is a root window. */ /* Check if the window is a root window. */
@ -1726,11 +1724,7 @@ meta_display_handle_xevent (MetaDisplay *display,
} }
#endif /* HAVE_XI23 */ #endif /* HAVE_XI23 */
/* libXi does not properly copy the serial to XI2 events, so pull it if (handle_input_xevent (display, input_event))
* from the parent XAnyEvent and pass it to handle_input_xevent.
* See: https://bugs.freedesktop.org/show_bug.cgi?id=64687
*/
if (handle_input_xevent (display, input_event, event->xany.serial))
{ {
bypass_gtk = bypass_compositor = TRUE; bypass_gtk = bypass_compositor = TRUE;
goto out; goto out;