<div dir="ltr">_XiCheckExtInit already unlocks the display on error. Yes, it's terrible.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 9, 2014 at 3:23 AM, walter harms <span dir="ltr"><<a href="mailto:wharms@bfs.de" target="_blank">wharms@bfs.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
Am 08.07.2014 23:01, schrieb Jasper St. Pierre:<br>
<div><div class="h5">> _XIPassiveGrabDevice calls LockDisplay as the first thing it does. That<br>
> means that it expects the display to be unlocked. XIGrabTouchBegin locks<br>
> the display to check for the XI extension, and then never unlocks it.<br>
> Effectively, this meant that anybody that called XIGrabTouchBegin after<br>
> XInitThreads just got a deadlock.<br>
><br>
> Cool.<br>
> ---<br>
>  src/XIPassiveGrab.c | 1 +<br>
>  1 file changed, 1 insertion(+)<br>
><br>
> diff --git a/src/XIPassiveGrab.c b/src/XIPassiveGrab.c<br>
> index f3a9924..88f1aff 100644<br>
> --- a/src/XIPassiveGrab.c<br>
> +++ b/src/XIPassiveGrab.c<br>
> @@ -166,6 +166,7 @@ XIGrabTouchBegin(Display *dpy, int deviceid, Window grab_window,<br>
>      LockDisplay(dpy);<br>
>      if (_XiCheckExtInit(dpy, XInput_2_2, extinfo) == -1)<br>
>       return -1;<br>
> +    UnlockDisplay(dpy);<br>
><br>
>      /* FIXME: allow selection of GrabMode for paired devices? */<br>
>      return _XIPassiveGrabDevice(dpy, deviceid, XIGrabtypeTouchBegin, 0,<br>
<br>
<br>
</div></div>I am not an expert on this but you should  unlock the display on error also.<br>
I would do it this way:<br>
<br>
LockDisplay(dpy);<br>
err=_XiCheckExtInit(dpy, XInput_2_2, extinfo);<br>
UnlockDisplay(dpy);<br>
if (err == -1)<br>
        return -1;<br>
<br>
jz'ust my 2 cents<br>
re,<br>
 wh<br>
<br>
_______________________________________________<br>
<a href="mailto:xorg-devel@lists.x.org">xorg-devel@lists.x.org</a>: X.Org development<br>
Archives: <a href="http://lists.x.org/archives/xorg-devel" target="_blank">http://lists.x.org/archives/xorg-devel</a><br>
Info: <a href="http://lists.x.org/mailman/listinfo/xorg-devel" target="_blank">http://lists.x.org/mailman/listinfo/xorg-devel</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>  Jasper<br>
</div>