[PATCH] Fix locking bugs with XIAllowTouchEvents() and XIUngrabTouchBegin()
Peter Hutterer
peter.hutterer at who-t.net
Sun Jul 13 15:47:28 PDT 2014
On Fri, Jul 11, 2014 at 03:13:54PM -0400, otaylor at redhat.com wrote:
> From: "Owen W. Taylor" <otaylor at fishsoup.net>
>
> Fix two places where the display was double locked when an API
> function chained to an implementation that also locks the display.
> ---
> src/XIAllowEvents.c | 7 +------
> src/XIPassiveGrab.c | 1 +
> 2 files changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/src/XIAllowEvents.c b/src/XIAllowEvents.c
> index c8d997a..2468fce 100644
> --- a/src/XIAllowEvents.c
> +++ b/src/XIAllowEvents.c
> @@ -86,17 +86,12 @@ Status
> XIAllowTouchEvents(Display *dpy, int deviceid, unsigned int touchid,
> Window grab_window, int event_mode)
> {
> - int status;
> XExtDisplayInfo *extinfo = XInput_find_display(dpy);
>
> LockDisplay(dpy);
> if (_XiCheckExtInit(dpy, XInput_2_2, extinfo) == -1)
> return (NoSuchExtension);
> -
> - status = _XIAllowEvents(dpy, deviceid, event_mode, CurrentTime, touchid, grab_window);
> -
> UnlockDisplay(dpy);
> - SyncHandle();
>
> - return status;
> + return _XIAllowEvents(dpy, deviceid, event_mode, CurrentTime, touchid, grab_window);
> }
> diff --git a/src/XIPassiveGrab.c b/src/XIPassiveGrab.c
> index 88f1aff..c743516 100644
> --- a/src/XIPassiveGrab.c
> +++ b/src/XIPassiveGrab.c
> @@ -249,6 +249,7 @@ XIUngrabTouchBegin(Display* display, int deviceid, Window grab_window,
> LockDisplay(display);
> if (_XiCheckExtInit(display, XInput_2_2, extinfo) == -1)
> return -1;
> + UnlockDisplay(display);
>
> return _XIPassiveUngrabDevice(display, deviceid, XIGrabtypeTouchBegin, 0,
> grab_window, num_modifiers, modifiers);
> --
> 1.9.3
pushed, thanks!
0250f40..b731d13 master -> master
I'll give it a few days to see if you find another one like this and then
push out the 1.7.4 update.
Cheers,
Peter
More information about the xorg-devel
mailing list