Am 09.07.2014 12:23, schrieb Jasper St. Pierre: > _XiCheckExtInit already unlocks the display on error. Yes, it's terrible. > >
In this case, it would be better to move the lock/unlock into _XiCheckExtInit. re, wh > On Wed, Jul 9, 2014 at 3:23 AM, walter harms <[email protected]> wrote: > >> >> >> Am 08.07.2014 23:01, schrieb Jasper St. Pierre: >>> _XIPassiveGrabDevice calls LockDisplay as the first thing it does. That >>> means that it expects the display to be unlocked. XIGrabTouchBegin locks >>> the display to check for the XI extension, and then never unlocks it. >>> Effectively, this meant that anybody that called XIGrabTouchBegin after >>> XInitThreads just got a deadlock. >>> >>> Cool. >>> --- >>> src/XIPassiveGrab.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/src/XIPassiveGrab.c b/src/XIPassiveGrab.c >>> index f3a9924..88f1aff 100644 >>> --- a/src/XIPassiveGrab.c >>> +++ b/src/XIPassiveGrab.c >>> @@ -166,6 +166,7 @@ XIGrabTouchBegin(Display *dpy, int deviceid, Window >> grab_window, >>> LockDisplay(dpy); >>> if (_XiCheckExtInit(dpy, XInput_2_2, extinfo) == -1) >>> return -1; >>> + UnlockDisplay(dpy); >>> >>> /* FIXME: allow selection of GrabMode for paired devices? */ >>> return _XIPassiveGrabDevice(dpy, deviceid, XIGrabtypeTouchBegin, 0, >> >> >> I am not an expert on this but you should unlock the display on error >> also. >> I would do it this way: >> >> LockDisplay(dpy); >> err=_XiCheckExtInit(dpy, XInput_2_2, extinfo); >> UnlockDisplay(dpy); >> if (err == -1) >> return -1; >> >> jz'ust my 2 cents >> re, >> wh >> >> _______________________________________________ >> [email protected]: X.Org development >> Archives: http://lists.x.org/archives/xorg-devel >> Info: http://lists.x.org/mailman/listinfo/xorg-devel >> > > > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
