_XiCheckExtInit already unlocks the display on error. Yes, it's terrible.
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 > -- Jasper
_______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
