[PATCH] Fix locking bugs with XIAllowTouchEvents() and XIUngrabTouchBegin()

otaylor at redhat.com otaylor at redhat.com
Fri Jul 11 10:54:35 PDT 2014


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 | 6 +-----
 src/XIPassiveGrab.c | 1 +
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/XIAllowEvents.c b/src/XIAllowEvents.c
index c8d997a..b0be6bb 100644
--- a/src/XIAllowEvents.c
+++ b/src/XIAllowEvents.c
@@ -92,11 +92,7 @@ XIAllowTouchEvents(Display *dpy, int deviceid, unsigned int touchid,
     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



More information about the xorg-devel mailing list