Peter Hutterer <[email protected]> writes:

> Using client->clientAsMask as resource for implicit passive grabs causes
> resource conflict with client-allocated resources. Freeing the passive grab
> frees all resources with that ID, so arbitrary resources can get freed while
> still in use. This causes random crashes.

Oh, another question -- I can't see any possible way a window resource
ID in a TouchListener wouldn't reference the window pointer which is
already present. If so, RetrieveTouchDeliveryData could be further
simplified:

@@ -1315,15 +1315,7 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, 
TouchPointInfoPtr ti,
         *mask = (*grab)->xi2mask;
     }
     else {
-        if (listener->level == CORE)
-            rc = dixLookupWindow(win, listener->listener,
-                                 serverClient, DixSendAccess);
-        else
-            rc = dixLookupResourceByType((pointer *) win, listener->listener,
-                                         RT_INPUTCLIENT,
-                                         serverClient, DixSendAccess);
-        if (rc != Success)
-            return FALSE;
+        *win = listener->window;
 
         if (listener->level == XI2) {
             int evtype;

-- 
[email protected]

Attachment: pgpgcI16JE0gs.pgp
Description: PGP signature

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to