[PATCH libXi 2/2] XIPassiveGrab: Fix completely broken locking in XIGrabTouchBegin

Jasper St. Pierre jstpierre at mecheye.net
Wed Jul 9 03:23:57 PDT 2014


_XiCheckExtInit already unlocks the display on error. Yes, it's terrible.


On Wed, Jul 9, 2014 at 3:23 AM, walter harms <wharms at bfs.de> 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
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>



-- 
  Jasper
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20140709/c8d43efc/attachment-0001.html>


More information about the xorg-devel mailing list