backends/x11: Flush connection after ungrab

Modal ungrabs may be followed by other clients trying to grab themselves,
flush the connection so we ensure the right order of events on the Xserver
side.

An example of this is js/ui/modalDialog.js in gnome-shell, as the alt-F2
dialog may launch X11 clients trying to grab themselves, commit a40daa3c22
in gnome-shell handled the case and added a gdk_display_sync() call to
ensure no grab existed at the time of executing.

This commit aims to achieve the same built in MetaBackend. A full sync
seems excessive though, as we just need to make sure the server got the
messages queued before the other side tries to grab, a XFlush seems
sufficient for this.
This commit is contained in:
Carlos Garnacho 2018-11-26 14:32:01 +01:00 committed by Georges Basile Stavracas Neto
parent 231aadd3f0
commit 262a3ecbd6

View File

@ -577,6 +577,7 @@ meta_backend_x11_ungrab_device (MetaBackend *backend,
int ret;
ret = XIUngrabDevice (priv->xdisplay, device_id, timestamp);
XFlush (priv->xdisplay);
return (ret == Success);
}