and now make my modifications to multittouch this morning also work
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 14 Oct 2011 09:11:49 +0000 (09:11 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 14 Oct 2011 09:11:49 +0000 (09:11 +0000)
again with mpx automatically. yay!

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@64071 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_x/xlib/ecore_x_xi2.c

index fecd4c2..2755c26 100644 (file)
@@ -70,7 +70,7 @@ _ecore_x_input_handler(XEvent *xevent)
    XIDeviceEvent *evd = (XIDeviceEvent *)(xevent->xcookie.data);
    int devid = evd->deviceid;
    int i;
-   
+
    if (_ecore_x_xi2_devs)
      {
         for (i = 0; i < _ecore_x_xi2_num; i++)
@@ -237,26 +237,38 @@ ecore_x_input_multi_select(Ecore_X_Window win)
           }
         else if (dev->use == XISlavePointer)
           {
-             XIEventMask eventmask;
-             unsigned char mask[4] = { 0 };
-
-             eventmask.deviceid = dev->deviceid;
-             eventmask.mask_len = sizeof(mask);
-             eventmask.mask = mask;
-             XISetMask(mask, XI_ButtonPress);
-             XISetMask(mask, XI_ButtonRelease);
-             XISetMask(mask, XI_Motion);
-#ifdef XI_TouchUpdate
-             XISetMask(mask, XI_TouchUpdate);
-#endif             
-#ifdef XI_TouchBegin
-             XISetMask(mask, XI_TouchBegin);
-#endif             
-#ifdef XI_TouchEnd
-             XISetMask(mask, XI_TouchEnd);
-#endif             
-             XISelectEvents(_ecore_x_disp, win, &eventmask, 1);
-             find = EINA_TRUE;
+             XIDeviceInfo *atdev = NULL;
+             int j;
+             
+             for (j = 0; j < _ecore_x_xi2_num; j++)
+               {
+                  if (_ecore_x_xi2_devs[j].deviceid == dev->attachment)
+                     atdev = &(_ecore_x_xi2_devs[j]);
+               }
+             if (((atdev) && (atdev->use != XIMasterPointer)) ||
+                 (!atdev))
+               {
+                  XIEventMask eventmask;
+                  unsigned char mask[4] = { 0 };
+                  
+                  eventmask.deviceid = dev->deviceid;
+                  eventmask.mask_len = sizeof(mask);
+                  eventmask.mask = mask;
+                  XISetMask(mask, XI_ButtonPress);
+                  XISetMask(mask, XI_ButtonRelease);
+                  XISetMask(mask, XI_Motion);
+# ifdef XI_TouchUpdate
+                  XISetMask(mask, XI_TouchUpdate);
+# endif             
+# ifdef XI_TouchBegin
+                  XISetMask(mask, XI_TouchBegin);
+# endif             
+# ifdef XI_TouchEnd
+                  XISetMask(mask, XI_TouchEnd);
+# endif             
+                  XISelectEvents(_ecore_x_disp, win, &eventmask, 1);
+                  find = EINA_TRUE;
+               }
           }
      }