summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen W. Taylor <otaylor@fishsoup.net>2014-07-11 15:13:54 -0400
committerPeter Hutterer <peter.hutterer@who-t.net>2014-07-14 08:46:29 +1000
commitb731d1357d993663ee6b28d6627bdeba69b60dd2 (patch)
treea2619e2ddda01b72bb6317f3a77f2f23188d5032
parent0250f40fb7c9cb7d542189b9cd37e0ae75309729 (diff)
downloadxorg-lib-libXi-b731d1357d993663ee6b28d6627bdeba69b60dd2.tar.gz
Fix locking bugs with XIAllowTouchEvents() and XIUngrabTouchBegin()
Fix two places where the display was double locked when an API function chained to an implementation that also locks the display. Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--src/XIAllowEvents.c7
-rw-r--r--src/XIPassiveGrab.c1
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);