debian/changelog               |    7 
 debian/patches/500_xi2.1.patch |  481 ++++++++++++++++++-----------------------
 2 files changed, 228 insertions(+), 260 deletions(-)

New commits:
commit debf2e97639978400e3643d0dbeecbf1a8194c3c
Author: Chase Douglas <chase.doug...@canonical.com>
Date:   Fri Mar 18 11:09:51 2011 -0400

    Process ownership properly when activating an async passive grab (LP: 
#733483)

diff --git a/debian/changelog b/debian/changelog
index 95f3efc..21d73c5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+xorg-server (2:1.10.0-0ubuntu2) UNRELEASED; urgency=low
+
+  * Process ownership properly when activating an async passive grab
+    (LP: #733483)
+
+ -- Chase Douglas <chase.doug...@ubuntu.com>  Fri, 18 Mar 2011 11:08:13 -0400
+
 xorg-server (2:1.10.0-0ubuntu1) natty; urgency=low
   
   * Update to new upstream final release.
diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch
index 733f6f5..d56ff6b 100644
--- a/debian/patches/500_xi2.1.patch
+++ b/debian/patches/500_xi2.1.patch
@@ -1,8 +1,6 @@
-Index: xorg-server/Xi/allowev.c
-===================================================================
---- xorg-server.orig/Xi/allowev.c      2011-02-28 13:56:41.000000000 +1100
-+++ xorg-server/Xi/allowev.c   2011-03-09 13:11:48.093384404 +1100
-@@ -125,5 +125,24 @@
+--- a/Xi/allowev.c
++++ b/Xi/allowev.c
+@@ -125,5 +125,24 @@ ProcXAllowDeviceEvents(ClientPtr client)
        client->errorValue = stuff->mode;
        return BadValue;
      }
@@ -27,11 +25,9 @@ Index: xorg-server/Xi/allowev.c
 +
      return Success;
  }
-Index: xorg-server/Xi/exevents.c
-===================================================================
---- xorg-server.orig/Xi/exevents.c     2011-03-09 11:19:12.126789337 +1100
-+++ xorg-server/Xi/exevents.c  2011-03-09 13:11:48.093384404 +1100
-@@ -44,6 +44,31 @@
+--- a/Xi/exevents.c
++++ b/Xi/exevents.c
+@@ -44,6 +44,31 @@ SOFTWARE.
  
  ********************************************************/
  
@@ -63,7 +59,7 @@ Index: xorg-server/Xi/exevents.c
  /********************************************************************
   *
   *  Routines to register and initialize extension input devices.
-@@ -77,6 +102,9 @@
+@@ -77,6 +102,9 @@ SOFTWARE.
  #include "xiquerydevice.h" /* For List*Info */
  #include "eventconvert.h"
  #include "eventstr.h"
@@ -73,7 +69,7 @@ Index: xorg-server/Xi/exevents.c
  
  #include <X11/extensions/XKBproto.h>
  #include "xkbsrv.h"
-@@ -127,6 +155,20 @@
+@@ -127,6 +155,20 @@ IsPointerEvent(InternalEvent* event)
      return FALSE;
  }
  
@@ -94,7 +90,7 @@ Index: xorg-server/Xi/exevents.c
  /**
   * @return the device matching the deviceid of the device set in the event, or
   * NULL if the event is not an XInput event.
-@@ -725,6 +767,46 @@
+@@ -725,6 +767,46 @@ ChangeMasterDeviceClasses(DeviceIntPtr d
      XISendDeviceChangedEvent(slave, device, dce);
  }
  
@@ -141,7 +137,7 @@ Index: xorg-server/Xi/exevents.c
  /**
   * Update the device state according to the data in the event.
   *
-@@ -732,8 +814,6 @@
+@@ -732,8 +814,6 @@ ChangeMasterDeviceClasses(DeviceIntPtr d
   *   DEFAULT ... process as normal
   *   DONT_PROCESS ... return immediately from caller
   */
@@ -150,7 +146,7 @@ Index: xorg-server/Xi/exevents.c
  int
  UpdateDeviceState(DeviceIntPtr device, DeviceEvent* event)
  {
-@@ -857,34 +937,9 @@
+@@ -857,34 +937,9 @@ UpdateDeviceState(DeviceIntPtr device, D
  
          if (!button_is_down(device, key, BUTTON_PROCESSED))
              return DONT_PROCESS;
@@ -186,7 +182,7 @@ Index: xorg-server/Xi/exevents.c
  
          /* Add state and motionMask to the filter for this event */
          mask = DevicePointerMotionMask | b->state | b->motionMask;
-@@ -926,6 +981,939 @@
+@@ -926,6 +981,955 @@ ProcessRawEvent(RawDeviceEvent *ev, Devi
  }
  
  /**
@@ -706,13 +702,29 @@ Index: xorg-server/Xi/exevents.c
 +        /* Check for a passive pointer grab on this window. */
 +        grab = CheckPassiveGrabsOnWindow(win, dev, &p_event, TRUE, FALSE);
 +        if (grab)
++        {
++            if (grab->pointerMode == GrabModeAsync)
++            {
++                ti->owner = -1;
++                ti->active_clients = 0;
++            }
++
 +            return TRUE;
++        }
 +        else if (master)
 +        {
 +            grab = CheckPassiveGrabsOnWindow(win, master, &p_event, TRUE,
 +                                             FALSE);
 +            if (grab)
++            {
++                if (grab->pointerMode == GrabModeAsync)
++                {
++                    ti->owner = -1;
++                    ti->active_clients = 0;
++                }
++
 +                return TRUE;
++            }
 +        }
 +
 +next:
@@ -1126,7 +1138,7 @@ Index: xorg-server/Xi/exevents.c
   * Main device event processing function.
   * Called from when processing the events from the event queue.
   *
-@@ -954,6 +1942,33 @@
+@@ -954,6 +1958,33 @@ ProcessOtherEvent(InternalEvent *ev, Dev
      {
          ProcessRawEvent(&ev->raw_event, device);
          return;
@@ -1160,7 +1172,7 @@ Index: xorg-server/Xi/exevents.c
      }
  
      if (IsPointerDevice(device))
-@@ -1152,6 +2167,50 @@
+@@ -1152,6 +2183,50 @@ InitValuatorAxisStruct(DeviceIntPtr dev,
          dev->proximity->in_proximity = FALSE;
  }
  
@@ -1211,7 +1223,7 @@ Index: xorg-server/Xi/exevents.c
  static void
  FixDeviceStateNotify(DeviceIntPtr dev, deviceStateNotify * ev, KeyClassPtr k,
                     ButtonClassPtr b, ValuatorClassPtr v, int first)
-@@ -1562,6 +2621,38 @@
+@@ -1562,6 +2637,38 @@ GrabWindow(ClientPtr client, DeviceIntPt
      return AddPassiveGrabToList(client, grab);
  }
  
@@ -1250,7 +1262,7 @@ Index: xorg-server/Xi/exevents.c
  int
  SelectForWindow(DeviceIntPtr dev, WindowPtr pWin, ClientPtr client,
                Mask mask, Mask exclusivemasks)
-@@ -1695,10 +2786,65 @@
+@@ -1695,10 +2802,65 @@ RecalculateDeviceDeliverableEvents(Windo
      }
  }
  
@@ -1316,7 +1328,7 @@ Index: xorg-server/Xi/exevents.c
  
      if (!wOtherInputMasks(pWin))
        return Success;
-@@ -1734,6 +2880,54 @@
+@@ -1734,6 +2896,54 @@ InputClientGone(WindowPtr pWin, XID id)
      FatalError("client not on device event list");
  }
  
@@ -1371,11 +1383,9 @@ Index: xorg-server/Xi/exevents.c
  int
  SendEvent(ClientPtr client, DeviceIntPtr d, Window dest, Bool propagate,
          xEvent * ev, Mask mask, int count)
-Index: xorg-server/Xi/extinit.c
-===================================================================
---- xorg-server.orig/Xi/extinit.c      2011-02-28 16:57:00.000000000 +1100
-+++ xorg-server/Xi/extinit.c   2011-03-09 13:11:48.093384404 +1100
-@@ -258,7 +258,8 @@
+--- a/Xi/extinit.c
++++ b/Xi/extinit.c
+@@ -258,7 +258,8 @@ static int (*ProcIVector[])(ClientPtr) =
          ProcXIChangeProperty,                   /* 57 */
          ProcXIDeleteProperty,                   /* 58 */
          ProcXIGetProperty,                      /* 59 */
@@ -1385,7 +1395,7 @@ Index: xorg-server/Xi/extinit.c
  };
  
  /* For swapped clients */
-@@ -323,7 +324,8 @@
+@@ -323,7 +324,8 @@ static int (*SProcIVector[])(ClientPtr)
          SProcXIChangeProperty,                   /* 57 */
          SProcXIDeleteProperty,                   /* 58 */
          SProcXIGetProperty,                      /* 59 */
@@ -1395,7 +1405,7 @@ Index: xorg-server/Xi/extinit.c
  };
  
  /*****************************************************************
-@@ -854,6 +856,21 @@
+@@ -854,6 +856,21 @@ static void SRawEvent(xXIRawEvent *from,
      swaps(&to->valuators_len, n);
  }
  
@@ -1417,7 +1427,7 @@ Index: xorg-server/Xi/extinit.c
  
  /** Event swapping function for XI2 events. */
  void
-@@ -881,8 +898,16 @@
+@@ -881,8 +898,16 @@ XI2EventSwap(xGenericEvent *from, xGener
          case XI_KeyRelease:
          case XI_ButtonPress:
          case XI_ButtonRelease:
@@ -1434,10 +1444,8 @@ Index: xorg-server/Xi/extinit.c
          case XI_RawMotion:
          case XI_RawKeyPress:
          case XI_RawKeyRelease:
-Index: xorg-server/Xi/xiallowev.c
-===================================================================
---- xorg-server.orig/Xi/xiallowev.c    2011-02-28 13:56:41.000000000 +1100
-+++ xorg-server/Xi/xiallowev.c 2011-03-09 13:11:48.093384404 +1100
+--- a/Xi/xiallowev.c
++++ b/Xi/xiallowev.c
 @@ -35,11 +35,15 @@
  
  #include "inputstr.h" /* DeviceIntPtr      */
@@ -1454,7 +1462,7 @@ Index: xorg-server/Xi/xiallowev.c
  
  int
  SProcXIAllowEvents(ClientPtr client)
-@@ -98,6 +102,113 @@
+@@ -98,6 +102,113 @@ ProcXIAllowEvents(ClientPtr client)
        ret = BadValue;
      }
  
@@ -1568,10 +1576,8 @@ Index: xorg-server/Xi/xiallowev.c
 +
 +    return Success;
 +}
-Index: xorg-server/Xi/xiallowev.h
-===================================================================
---- xorg-server.orig/Xi/xiallowev.h    2011-02-28 13:56:41.000000000 +1100
-+++ xorg-server/Xi/xiallowev.h 2011-03-09 13:11:48.093384404 +1100
+--- a/Xi/xiallowev.h
++++ b/Xi/xiallowev.h
 @@ -32,5 +32,7 @@
  
  int ProcXIAllowEvents(ClientPtr client);
@@ -1580,11 +1586,9 @@ Index: xorg-server/Xi/xiallowev.h
 +int SProcXIAllowTouchEvents(ClientPtr client);
  
  #endif /* XIALLOWEV_H */
-Index: xorg-server/Xi/xipassivegrab.c
-===================================================================
---- xorg-server.orig/Xi/xipassivegrab.c        2011-03-09 11:19:12.000000000 
+1100
-+++ xorg-server/Xi/xipassivegrab.c     2011-03-09 13:11:48.093384404 +1100
-@@ -105,19 +105,30 @@
+--- a/Xi/xipassivegrab.c
++++ b/Xi/xipassivegrab.c
+@@ -105,19 +105,30 @@ ProcXIPassiveGrabDevice(ClientPtr client
      if (stuff->grab_type != XIGrabtypeButton &&
          stuff->grab_type != XIGrabtypeKeycode &&
          stuff->grab_type != XIGrabtypeEnter &&
@@ -1617,7 +1621,7 @@ Index: xorg-server/Xi/xipassivegrab.c
      if (XICheckInvalidMaskBits(client, (unsigned char*)&stuff[1],
                                 stuff->mask_len * 4) != Success)
          return BadValue;
-@@ -185,6 +196,9 @@
+@@ -185,6 +196,9 @@ ProcXIPassiveGrabDevice(ClientPtr client
                  status = GrabWindow(client, dev, stuff->grab_type,
                                      &param, &mask);
                  break;
@@ -1627,11 +1631,9 @@ Index: xorg-server/Xi/xipassivegrab.c
          }
  
          if (status != GrabSuccess)
-Index: xorg-server/Xi/xiquerydevice.c
-===================================================================
---- xorg-server.orig/Xi/xiquerydevice.c        2011-03-09 11:19:12.000000000 
+1100
-+++ xorg-server/Xi/xiquerydevice.c     2011-03-09 13:11:48.093384404 +1100
-@@ -232,6 +232,12 @@
+--- a/Xi/xiquerydevice.c
++++ b/Xi/xiquerydevice.c
+@@ -232,6 +232,12 @@ SizeDeviceClasses(DeviceIntPtr dev)
      if (dev->valuator)
          len += sizeof(xXIValuatorInfo) * dev->valuator->numAxes;
  
@@ -1644,7 +1646,7 @@ Index: xorg-server/Xi/xiquerydevice.c
      return len;
  }
  
-@@ -373,6 +379,73 @@
+@@ -373,6 +379,73 @@ SwapValuatorInfo(DeviceIntPtr dev, xXIVa
      swaps(&info->sourceid, n);
  }
  
@@ -1718,7 +1720,7 @@ Index: xorg-server/Xi/xiquerydevice.c
  int GetDeviceUse(DeviceIntPtr dev, uint16_t *attachment)
  {
      DeviceIntPtr master = dev->u.master;
-@@ -462,6 +535,22 @@
+@@ -462,6 +535,22 @@ ListDeviceClasses(ClientPtr client, Devi
          total_len += len;
      }
  
@@ -1741,7 +1743,7 @@ Index: xorg-server/Xi/xiquerydevice.c
      return total_len;
  }
  
-@@ -489,6 +578,12 @@
+@@ -489,6 +578,12 @@ SwapDeviceInfo(DeviceIntPtr dev, xXIDevi
              case XIValuatorClass:
                  SwapValuatorInfo(dev, (xXIValuatorInfo*)any);
                  break;
@@ -1754,11 +1756,9 @@ Index: xorg-server/Xi/xiquerydevice.c
          }
  
          any += len * 4;
-Index: xorg-server/Xi/xiquerydevice.h
-===================================================================
---- xorg-server.orig/Xi/xiquerydevice.h        2011-02-28 13:56:41.000000000 
+1100
-+++ xorg-server/Xi/xiquerydevice.h     2011-03-09 13:11:48.093384404 +1100
-@@ -44,4 +44,7 @@
+--- a/Xi/xiquerydevice.h
++++ b/Xi/xiquerydevice.h
+@@ -44,4 +44,7 @@ int ListButtonInfo(DeviceIntPtr dev, xXI
  int ListKeyInfo(DeviceIntPtr dev, xXIKeyInfo* info);
  int ListValuatorInfo(DeviceIntPtr dev, xXIValuatorInfo* info,
                     int axisnumber, Bool reportState);
@@ -1766,11 +1766,9 @@ Index: xorg-server/Xi/xiquerydevice.h
 +int ListTouchValuatorInfo(DeviceIntPtr dev, xXITouchValuatorInfo* val,
 +                          int axisnumber);
  #endif /* QUERYDEV_H */
-Index: xorg-server/Xi/xiselectev.c
-===================================================================
---- xorg-server.orig/Xi/xiselectev.c   2011-02-28 13:56:41.000000000 +1100
-+++ xorg-server/Xi/xiselectev.c        2011-03-09 13:11:48.093384404 +1100
-@@ -152,6 +152,60 @@
+--- a/Xi/xiselectev.c
++++ b/Xi/xiselectev.c
+@@ -152,6 +152,60 @@ ProcXISelectEvents(ClientPtr client)
              }
          }
  
@@ -1831,11 +1829,9 @@ Index: xorg-server/Xi/xiselectev.c
          if (XICheckInvalidMaskBits(client, (unsigned char*)&evmask[1],
                                     evmask->mask_len * 4) != Success)
              return BadValue;
-Index: xorg-server/configure.ac
-===================================================================
---- xorg-server.orig/configure.ac      2011-03-09 13:09:24.000000000 +1100
-+++ xorg-server/configure.ac   2011-03-09 13:13:14.456700757 +1100
-@@ -792,7 +792,7 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -792,7 +792,7 @@ WINDOWSWMPROTO="windowswmproto"
  APPLEWMPROTO="applewmproto >= 1.4"
  
  dnl Core modules for most extensions, et al.
@@ -1844,11 +1840,9 @@ Index: xorg-server/configure.ac
  # Make SDK_REQUIRED_MODULES available for inclusion in xorg-server.pc
  AC_SUBST(SDK_REQUIRED_MODULES)
  
-Index: xorg-server/dix/devices.c
-===================================================================
---- xorg-server.orig/dix/devices.c     2011-03-09 11:19:13.000000000 +1100
-+++ xorg-server/dix/devices.c  2011-03-09 13:11:48.103384795 +1100
-@@ -754,6 +754,20 @@
+--- a/dix/devices.c
++++ b/dix/devices.c
+@@ -754,6 +754,20 @@ FreeDeviceClass(int type, pointer *class
                  free((*v));
                  break;
              }
@@ -1869,7 +1863,7 @@ Index: xorg-server/dix/devices.c
          case FocusClass:
              {
                  FocusClassPtr *f = (FocusClassPtr*)class;
-@@ -862,6 +876,7 @@
+@@ -862,6 +876,7 @@ FreeAllDeviceClasses(ClassesPtr classes)
  
      FreeDeviceClass(KeyClass, (pointer)&classes->key);
      FreeDeviceClass(ValuatorClass, (pointer)&classes->valuator);
@@ -1877,7 +1871,7 @@ Index: xorg-server/dix/devices.c
      FreeDeviceClass(ButtonClass, (pointer)&classes->button);
      FreeDeviceClass(FocusClass, (pointer)&classes->focus);
      FreeDeviceClass(ProximityClass, (pointer)&classes->proximity);
-@@ -1543,6 +1558,151 @@
+@@ -1545,6 +1560,151 @@ InitPointerDeviceStruct(DevicePtr device
           InitPtrFeedbackClassDeviceStruct(dev, controlProc));
  }
  
@@ -2029,7 +2023,7 @@ Index: xorg-server/dix/devices.c
  /*
   * Check if the given buffer contains elements between low (inclusive) and
   * high (inclusive) only.
-@@ -2375,6 +2535,58 @@
+@@ -2377,6 +2537,58 @@ RecalculateMasterButtons(DeviceIntPtr sl
      }
  }
  
@@ -2088,7 +2082,7 @@ Index: xorg-server/dix/devices.c
  /**
   * Attach device 'dev' to device 'master'.
   * Client is set to the client that issued the request, or NULL if it comes
-@@ -2440,6 +2652,12 @@
+@@ -2442,6 +2654,12 @@ AttachDevice(ClientPtr client, DeviceInt
          dev->spriteInfo->spriteOwner = FALSE;
  
          RecalculateMasterButtons(master);
@@ -2101,11 +2095,9 @@ Index: xorg-server/dix/devices.c
      }
  
      /* XXX: in theory, the MD should change back to its old, original
-Index: xorg-server/dix/eventconvert.c
-===================================================================
---- xorg-server.orig/dix/eventconvert.c        2011-03-09 11:39:57.000000000 
+1100
-+++ xorg-server/dix/eventconvert.c     2011-03-09 13:11:48.103384795 +1100
-@@ -55,6 +55,7 @@
+--- a/dix/eventconvert.c
++++ b/dix/eventconvert.c
+@@ -55,6 +55,7 @@ static int eventToKeyButtonPointer(Devic
  static int eventToDeviceChanged(DeviceChangedEvent *ev, xEvent **dcce);
  static int eventToDeviceEvent(DeviceEvent *ev, xEvent **xi);
  static int eventToRawEvent(RawDeviceEvent *ev, xEvent **xi);
@@ -2113,7 +2105,7 @@ Index: xorg-server/dix/eventconvert.c
  
  /* Do not use, read comments below */
  BOOL EventIsKeyRepeat(xEvent *event);
-@@ -139,6 +140,11 @@
+@@ -139,6 +140,11 @@ EventToCore(InternalEvent *event, xEvent
          case ET_RawButtonPress:
          case ET_RawButtonRelease:
          case ET_RawMotion:
@@ -2125,7 +2117,7 @@ Index: xorg-server/dix/eventconvert.c
              return BadMatch;
          default:
              /* XXX: */
-@@ -184,6 +190,11 @@
+@@ -184,6 +190,11 @@ EventToXI(InternalEvent *ev, xEvent **xi
          case ET_RawButtonPress:
          case ET_RawButtonRelease:
          case ET_RawMotion:
@@ -2137,7 +2129,7 @@ Index: xorg-server/dix/eventconvert.c
              *count = 0;
              *xi = NULL;
              return BadMatch;
-@@ -225,7 +236,13 @@
+@@ -225,7 +236,13 @@ EventToXI2(InternalEvent *ev, xEvent **x
          case ET_ButtonRelease:
          case ET_KeyPress:
          case ET_KeyRelease:
@@ -2151,7 +2143,7 @@ Index: xorg-server/dix/eventconvert.c
          case ET_ProximityIn:
          case ET_ProximityOut:
              *xi = NULL;
-@@ -588,6 +605,7 @@
+@@ -588,6 +605,7 @@ eventToDeviceEvent(DeviceEvent *ev, xEve
      xde->root_x         = FP1616(ev->root_x, ev->root_x_frac);
      xde->root_y         = FP1616(ev->root_y, ev->root_y_frac);
  
@@ -2159,7 +2151,7 @@ Index: xorg-server/dix/eventconvert.c
      if (ev->key_repeat)
          xde->flags      |= XIKeyRepeat;
  
-@@ -625,6 +643,27 @@
+@@ -625,6 +643,27 @@ eventToDeviceEvent(DeviceEvent *ev, xEve
  }
  
  static int
@@ -2187,7 +2179,7 @@ Index: xorg-server/dix/eventconvert.c
  eventToRawEvent(RawDeviceEvent *ev, xEvent **xi)
  {
      xXIRawEvent* raw;
-@@ -739,6 +778,11 @@
+@@ -739,6 +778,11 @@ GetXI2Type(InternalEvent *event)
          case ET_RawMotion:      xi2type = XI_RawMotion;        break;
          case ET_FocusIn:        xi2type = XI_FocusIn;          break;
          case ET_FocusOut:       xi2type = XI_FocusOut;         break;
@@ -2199,11 +2191,9 @@ Index: xorg-server/dix/eventconvert.c
          default:
              break;
      }
-Index: xorg-server/dix/events.c
-===================================================================
---- xorg-server.orig/dix/events.c      2011-03-09 11:19:13.000000000 +1100
-+++ xorg-server/dix/events.c   2011-03-09 13:11:48.103384795 +1100
-@@ -1089,7 +1089,7 @@
+--- a/dix/events.c
++++ b/dix/events.c
+@@ -1089,7 +1089,7 @@ NoticeEventTime(InternalEvent *ev)
  void
  EnqueueEvent(InternalEvent *ev, DeviceIntPtr device)
  {
@@ -2212,7 +2202,7 @@ Index: xorg-server/dix/events.c
      QdEventPtr        qe;
      SpritePtr pSprite = device->spriteInfo->sprite;
      int               eventlen;
-@@ -1160,8 +1160,10 @@
+@@ -1160,8 +1160,10 @@ EnqueueEvent(InternalEvent *ev, DeviceIn
      qe->event = (InternalEvent *)(qe + 1);
      memcpy(qe->event, event, eventlen);
      if (tail)
@@ -2225,7 +2215,7 @@ Index: xorg-server/dix/events.c
  }
  
  /**
-@@ -1176,18 +1178,19 @@
+@@ -1176,18 +1178,19 @@ EnqueueEvent(InternalEvent *ev, DeviceIn
  static void
  PlayReleasedEvents(void)
  {
@@ -2250,7 +2240,7 @@ Index: xorg-server/dix/events.c
                syncEvents.pendtail = prev;
            if (qe->event->any.type == ET_Motion)
                CheckVirtualMotion(pDev, qe, NullWindow);
-@@ -1219,6 +1222,7 @@
+@@ -1219,6 +1222,7 @@ PlayReleasedEvents(void)
  
            }
  #endif
@@ -2258,7 +2248,7 @@ Index: xorg-server/dix/events.c
            (*qe->device->public.processInputProc)(qe->event, qe->device);
            free(qe);
            for (dev = inputInfo.devices; dev && dev->deviceGrab.sync.frozen; 
dev = dev->next)
-@@ -1227,10 +1231,14 @@
+@@ -1227,10 +1231,14 @@ PlayReleasedEvents(void)
                break;
            /* Playing the event may have unfrozen another device. */
            /* So to play it safe, restart at the head of the queue */
@@ -2275,7 +2265,7 @@ Index: xorg-server/dix/events.c
      }
  }
  
-@@ -1252,6 +1260,76 @@
+@@ -1252,6 +1260,76 @@ FreezeThaw(DeviceIntPtr dev, Bool frozen
        dev->public.processInputProc = dev->public.realInputProc;
  }
  
@@ -2352,7 +2342,7 @@ Index: xorg-server/dix/events.c
  /**
   * Unfreeze devices and replay all events to the respective clients.
   *
-@@ -1278,6 +1356,14 @@
+@@ -1278,6 +1356,14 @@ ComputeFreezes(void)
      {
          DeviceEvent* event = replayDev->deviceGrab.sync.event;
  
@@ -2367,7 +2357,7 @@ Index: xorg-server/dix/events.c
        syncEvents.replayDev = (DeviceIntPtr)NULL;
  
          w = XYToWindow(replayDev->spriteInfo->sprite,
-@@ -1291,6 +1377,7 @@
+@@ -1291,6 +1377,7 @@ ComputeFreezes(void)
                                      NullWindow, replayDev);
          }
      }
@@ -2375,7 +2365,7 @@ Index: xorg-server/dix/events.c
      for (dev = inputInfo.devices; dev; dev = dev->next)
      {
        if (!dev->deviceGrab.sync.frozen)
-@@ -1510,6 +1597,20 @@
+@@ -1510,6 +1597,20 @@ DeactivatePointerGrab(DeviceIntPtr mouse
      if (!wasImplicit && grab->grabtype == GRABTYPE_XI2)
          ReattachToOldMaster(mouse);
  
@@ -2396,7 +2386,7 @@ Index: xorg-server/dix/events.c
      ComputeFreezes();
  }
  
-@@ -1757,6 +1858,25 @@
+@@ -1757,6 +1858,25 @@ ProcAllowEvents(ClientPtr client)
            client->errorValue = stuff->mode;
            return BadValue;
      }
@@ -2422,7 +2412,7 @@ Index: xorg-server/dix/events.c
      return Success;
  }
  
-@@ -2174,7 +2294,7 @@
+@@ -2174,7 +2294,7 @@ MaybeDeliverEventsToClient(WindowPtr pWi
  
  static Window FindChildForEvent(SpritePtr pSprite, WindowPtr event)
  {
@@ -2431,7 +2421,7 @@ Index: xorg-server/dix/events.c
      Window child = None;
  
      /* If the search ends up past the root should the child field be
-@@ -2232,7 +2352,8 @@
+@@ -2232,7 +2352,8 @@ FixUpEventFromWindow(
              event->evtype == XI_RawMotion ||
              event->evtype == XI_DeviceChanged ||
              event->evtype == XI_HierarchyChanged ||
@@ -2441,7 +2431,7 @@ Index: xorg-server/dix/events.c
              return;
  
          event->root = RootWindow(pSprite)->drawable.id;
-@@ -2369,12 +2490,119 @@
+@@ -2369,12 +2490,119 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
      xEvent core;
      xEvent *xE = NULL;
      int rc, mask, count = 0;
@@ -2562,7 +2552,7 @@ Index: xorg-server/dix/events.c
          {
              /* XI2 events first */
              if (mask & XI2_MASK)
-@@ -2383,10 +2611,25 @@
+@@ -2383,10 +2611,25 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
                  rc = EventToXI2(event, &xi2);
                  if (rc == Success)
                  {
@@ -2590,7 +2580,7 @@ Index: xorg-server/dix/events.c
                                                         filter, grab);
                      free(xi2);
                      if (deliveries > 0)
-@@ -2439,6 +2682,14 @@
+@@ -2439,6 +2682,14 @@ DeliverDeviceEvents(WindowPtr pWin, Inte
                  goto unwind;
              }
          }
@@ -2605,7 +2595,7 @@ Index: xorg-server/dix/events.c
  
          child = pWin->drawable.id;
          pWin = pWin->parent;
-@@ -2591,7 +2842,7 @@
+@@ -2591,7 +2842,7 @@ XYToWindow(SpritePtr pSprite, int x, int
        else
            pWin = pWin->nextSib;
      }
@@ -2614,7 +2604,7 @@ Index: xorg-server/dix/events.c
  }
  
  /**
-@@ -2629,7 +2880,8 @@
+@@ -2629,7 +2880,8 @@ ActivateFocusInGrab(DeviceIntPtr dev, Wi
      event.deviceid = dev->id;
      event.sourceid = dev->id;
      event.detail.button = 0;
@@ -2624,7 +2614,7 @@ Index: xorg-server/dix/events.c
      if (rc)
          DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveUngrab);
      return rc;
-@@ -2666,7 +2918,8 @@
+@@ -2666,7 +2918,8 @@ ActivateEnterGrab(DeviceIntPtr dev, Wind
      event.deviceid = dev->id;
      event.sourceid = dev->id;
      event.detail.button = 0;
@@ -2634,7 +2624,7 @@ Index: xorg-server/dix/events.c
      if (rc)
          DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveGrab);
      return rc;
-@@ -3353,7 +3606,7 @@
+@@ -3353,7 +3606,7 @@ GrabPtr
  CheckPassiveGrabsOnWindow(
      WindowPtr pWin,
      DeviceIntPtr device,
@@ -2643,7 +2633,7 @@ Index: xorg-server/dix/events.c
      BOOL checkCore,
      BOOL activate)
  {
-@@ -3370,9 +3623,22 @@
+@@ -3370,9 +3623,22 @@ CheckPassiveGrabsOnWindow(
        return NULL;
      /* Fill out the grab details, but leave the type for later before
       * comparing */
@@ -2667,7 +2657,7 @@ Index: xorg-server/dix/events.c
      tempGrab.detail.pMask = NULL;
      tempGrab.modifiersDetail.pMask = NULL;
      tempGrab.next = NULL;
-@@ -3380,6 +3646,9 @@
+@@ -3380,6 +3646,9 @@ CheckPassiveGrabsOnWindow(
      {
        DeviceIntPtr    gdev;
        XkbSrvInfoPtr   xkbi = NULL;
@@ -2677,7 +2667,7 @@ Index: xorg-server/dix/events.c
  
        gdev= grab->modifierDevice;
          if (grab->grabtype == GRABTYPE_CORE)
-@@ -3405,16 +3674,15 @@
+@@ -3405,16 +3674,15 @@ CheckPassiveGrabsOnWindow(
          tempGrab.modifiersDetail.exact = xkbi ? xkbi->state.grab_mods : 0;
  
          /* Check for XI2 and XI grabs first */
@@ -2696,7 +2686,7 @@ Index: xorg-server/dix/events.c
                  (GrabMatchesSecond(&tempGrab, grab, FALSE)))
                  match = XI_MATCH;
          }
-@@ -3423,125 +3691,143 @@
+@@ -3423,125 +3691,152 @@ CheckPassiveGrabsOnWindow(
          if (!match && checkCore)
          {
              tempGrab.grabtype = GRABTYPE_CORE;
@@ -2892,21 +2882,28 @@ Index: xorg-server/dix/events.c
 +        (*grabinfo->ActivateGrab)(device, grab, currentTime, TRUE);
  
 -            if (xE)
--            {
--                FixUpEventFromWindow(pSprite, xE, grab->window, None, TRUE);
 +        /* Don't send touch events if you activate a touch grab. Touch grabs
 +         * are handled separately. */
 +        if (xE && grab->type != ET_TouchBegin)
 +        {
 +            FixUpEventFromWindow(pSprite, xE, grab->window, None, TRUE);
++
++            TryClientEvents(rClient(grab), device, xE, count,
++                            GetEventFilter(device, xE),
++                            GetEventFilter(device, xE), grab);
++
++            if (grab->pointerMode == GrabModeAsync &&
++                event->device_event.touchpoint)
+             {
+-                FixUpEventFromWindow(pSprite, xE, grab->window, None, TRUE);
++                TouchPointInfoPtr ti = event->device_event.touchpoint;
  
 -                TryClientEvents(rClient(grab), device, xE, count,
 -                                       GetEventFilter(device, xE),
 -                                       GetEventFilter(device, xE), grab);
--            }
-+            TryClientEvents(rClient(grab), device, xE, count,
-+                            GetEventFilter(device, xE),
-+                            GetEventFilter(device, xE), grab);
++                ProcessTouchOwnership(ti->source, ti, XITouchOwnerAccept,
++                                      FALSE);
+             }
 +        }
  
 -          if (grabinfo->sync.state == FROZEN_NO_EVENT)
@@ -2937,7 +2934,7 @@ Index: xorg-server/dix/events.c
      }
      return NULL;
  #undef CORE_MATCH
-@@ -3580,8 +3866,13 @@
+@@ -3580,8 +3875,13 @@ CheckDeviceGrabs(DeviceIntPtr device, De
  {
      int i;
      WindowPtr pWin = NULL;
@@ -2952,7 +2949,7 @@ Index: xorg-server/dix/events.c
  
      if (event->type != ET_ButtonPress &&
          event->type != ET_KeyPress)
-@@ -3609,7 +3900,8 @@
+@@ -3609,7 +3909,8 @@ CheckDeviceGrabs(DeviceIntPtr device, De
        for (; i < focus->traceGood; i++)
        {
            pWin = focus->trace[i];
@@ -2962,7 +2959,7 @@ Index: xorg-server/dix/events.c
                return TRUE;
        }
  
-@@ -3619,11 +3911,54 @@
+@@ -3619,11 +3920,54 @@ CheckDeviceGrabs(DeviceIntPtr device, De
            return FALSE;
      }
  
@@ -3020,7 +3017,7 @@ Index: xorg-server/dix/events.c
      }
  
      return FALSE;
-@@ -3745,6 +4080,17 @@
+@@ -3745,6 +4089,17 @@ DeliverGrabbedEvent(InternalEvent *event
      grabinfo = &thisDev->deviceGrab;
      grab = grabinfo->grab;
  
@@ -3038,7 +3035,7 @@ Index: xorg-server/dix/events.c
      if (grab->ownerEvents)
      {
        WindowPtr focus;
-@@ -3821,6 +4167,9 @@
+@@ -3821,6 +4176,9 @@ DeliverGrabbedEvent(InternalEvent *event
                  mask = grab->xi2mask[XIAllDevices][evtype/8] |
                      grab->xi2mask[XIAllMasterDevices][evtype/8] |
                      grab->xi2mask[thisDev->id][evtype/8];
@@ -3048,7 +3045,7 @@ Index: xorg-server/dix/events.c
                  /* try XI2 event */
                  FixUpEventFromWindow(pSprite, xi2, grab->window, None, TRUE);
                  /* XXX: XACE */
-@@ -4955,7 +5304,7 @@
+@@ -4955,7 +5313,7 @@ InitEvents(void)
        free(syncEvents.pending);
        syncEvents.pending = next;
      }
@@ -3057,10 +3054,8 @@ Index: xorg-server/dix/events.c
      syncEvents.playingEvents = FALSE;
      syncEvents.time.months = 0;
      syncEvents.time.milliseconds = 0; /* hardly matters */
-Index: xorg-server/dix/getevents.c
-===================================================================
---- xorg-server.orig/dix/getevents.c   2011-03-09 11:19:13.000000000 +1100
-+++ xorg-server/dix/getevents.c        2011-03-09 13:11:48.103384795 +1100
+--- a/dix/getevents.c
++++ b/dix/getevents.c
 @@ -47,6 +47,7 @@
  #include "eventstr.h"
  #include "eventconvert.h"
@@ -3069,7 +3064,7 @@ Index: xorg-server/dix/getevents.c
  
  #include <X11/extensions/XKBproto.h>
  #include "xkbsrv.h"
-@@ -160,7 +161,7 @@
+@@ -160,7 +161,7 @@ key_autorepeats(DeviceIntPtr pDev, int k
                (1 << (key_code & 7)));
  }
  
@@ -3078,7 +3073,7 @@ Index: xorg-server/dix/getevents.c
  init_event(DeviceIntPtr dev, DeviceEvent* event, Time ms)
  {
      memset(event, 0, sizeof(DeviceEvent));
-@@ -172,6 +173,18 @@
+@@ -172,6 +173,18 @@ init_event(DeviceIntPtr dev, DeviceEvent
  }
  
  static void
@@ -3097,7 +3092,7 @@ Index: xorg-server/dix/getevents.c
  init_raw(DeviceIntPtr dev, RawDeviceEvent *event, Time ms, int type, int 
detail)
  {
      memset(event, 0, sizeof(RawDeviceEvent));
-@@ -210,7 +223,8 @@
+@@ -210,7 +223,8 @@ set_valuators(DeviceIntPtr dev, DeviceEv
          if (valuator_mask_isset(mask, i))
          {
              SetBit(event->valuators.mask, i);
@@ -3107,7 +3102,7 @@ Index: xorg-server/dix/getevents.c
                  SetBit(event->valuators.mode, i);
              event->valuators.data[i] = valuator_mask_get(mask, i);
              event->valuators.data_frac[i] =
-@@ -1058,23 +1072,14 @@
+@@ -1058,23 +1072,14 @@ FreeEventList(EventListPtr list, int num
  }
  
  static void
@@ -3135,7 +3130,7 @@ Index: xorg-server/dix/getevents.c
  }
  
  /**
-@@ -1116,7 +1121,10 @@
+@@ -1116,7 +1121,10 @@ GetPointerEvents(EventList *events, Devi
      switch (type)
      {
          case MotionNotify:
@@ -3147,7 +3142,7 @@ Index: xorg-server/dix/getevents.c
                  return 0;
              break;
          case ButtonPress:
-@@ -1165,7 +1173,16 @@
+@@ -1165,7 +1173,16 @@ GetPointerEvents(EventList *events, Devi
              }
          }
  
@@ -3165,7 +3160,7 @@ Index: xorg-server/dix/getevents.c
          moveAbsolute(pDev, &x, &y, &mask);
      } else {
          if (flags & POINTER_ACCELERATE) {
-@@ -1286,6 +1303,130 @@
+@@ -1286,6 +1303,130 @@ GetProximityEvents(EventList *events, De
      return num_events;
  }
  
@@ -3296,11 +3291,9 @@ Index: xorg-server/dix/getevents.c
  /**
   * Synthesize a single motion event for the core pointer.
   *
-Index: xorg-server/dix/grabs.c
-===================================================================
---- xorg-server.orig/dix/grabs.c       2011-02-28 13:56:41.000000000 +1100
-+++ xorg-server/dix/grabs.c    2011-03-09 13:11:48.103384795 +1100
-@@ -60,6 +60,7 @@
+--- a/dix/grabs.c
++++ b/dix/grabs.c
+@@ -60,6 +60,7 @@ SOFTWARE.
  #include "dixgrabs.h"
  #include "xace.h"
  #include "exevents.h"
@@ -3308,7 +3301,7 @@ Index: xorg-server/dix/grabs.c
  
  #define BITMASK(i) (((Mask)1) << ((i) & 31))
  #define MASKIDX(i) ((i) >> 5)
-@@ -243,6 +244,25 @@
+@@ -243,6 +244,25 @@ GrabSupersedesSecond(GrabPtr pFirstGrab,
  }
  
  /**
@@ -3334,7 +3327,7 @@ Index: xorg-server/dix/grabs.c
   * Compares two grabs and returns TRUE if the first grab matches the second
   * grab. 
   * 
-@@ -261,6 +281,8 @@
+@@ -261,6 +281,8 @@ GrabMatchesSecond(GrabPtr pFirstGrab, Gr
      unsigned int any_modifier = (pFirstGrab->grabtype == GRABTYPE_XI2) ?
                                  (unsigned int)XIAnyModifier :
                                  (unsigned int)AnyModifier;
@@ -3343,7 +3336,7 @@ Index: xorg-server/dix/grabs.c
  
      if (pFirstGrab->grabtype != pSecondGrab->grabtype)
          return FALSE;
-@@ -288,8 +310,8 @@
+@@ -288,8 +310,8 @@ GrabMatchesSecond(GrabPtr pFirstGrab, Gr
               (pFirstGrab->modifierDevice != pSecondGrab->modifierDevice)))
              return FALSE;
  
@@ -3354,10 +3347,8 @@ Index: xorg-server/dix/grabs.c
  
      if (GrabSupersedesSecond(pFirstGrab, pSecondGrab) ||
        GrabSupersedesSecond(pSecondGrab, pFirstGrab))
-Index: xorg-server/dix/inpututils.c
-===================================================================
---- xorg-server.orig/dix/inpututils.c  2011-03-09 11:19:13.000000000 +1100
-+++ xorg-server/dix/inpututils.c       2011-03-09 13:11:48.113385173 +1100
+--- a/dix/inpututils.c
++++ b/dix/inpututils.c
 @@ -36,6 +36,7 @@
  #include "xkbsrv.h"
  #include "xkbstr.h"
@@ -3366,7 +3357,7 @@ Index: xorg-server/dix/inpututils.c
  
  /* Check if a button map change is okay with the device.
   * Returns -1 for BadValue, as it collides with MappingBusy. */
-@@ -556,3 +557,158 @@
+@@ -556,3 +557,158 @@ CountBits(const uint8_t *mask, int len)
  
      return ret;
  }
@@ -3525,11 +3516,9 @@ Index: xorg-server/dix/inpututils.c
 +    ti->client_id = 0;
 +    ti->active = FALSE;
 +}
-Index: xorg-server/dix/window.c
-===================================================================
---- xorg-server.orig/dix/window.c      2011-02-28 13:56:41.000000000 +1100
-+++ xorg-server/dix/window.c   2011-03-09 13:11:48.113385173 +1100
-@@ -110,6 +110,7 @@
+--- a/dix/window.c
++++ b/dix/window.c
+@@ -110,6 +110,7 @@ Equipment Corporation.
  #include "windowstr.h"
  #include "input.h"
  #include "inputstr.h"
@@ -3537,7 +3526,7 @@ Index: xorg-server/dix/window.c
  #include "resource.h"
  #include "colormapst.h"
  #include "cursorstr.h"
-@@ -2873,8 +2874,10 @@
+@@ -2873,8 +2874,10 @@ UnmapWindow(WindowPtr pWin, Bool fromCon
        if (!fromConfigure && pScreen->PostValidateTree)
            (*pScreen->PostValidateTree)(pLayerWin->parent, pWin, VTUnmap);
      }
@@ -3549,7 +3538,7 @@ Index: xorg-server/dix/window.c
      return Success;
  }
  
-@@ -2957,8 +2960,10 @@
+@@ -2957,8 +2960,10 @@ UnmapSubwindows(WindowPtr pWin)
        if (anyMarked && pScreen->PostValidateTree)
            (*pScreen->PostValidateTree)(pLayerWin->parent, pHead, VTUnmap);
      }
@@ -3561,11 +3550,9 @@ Index: xorg-server/dix/window.c
  }
  
  
-Index: xorg-server/hw/xfree86/common/xf86Module.h
-===================================================================
---- xorg-server.orig/hw/xfree86/common/xf86Module.h    2011-03-09 
11:39:57.000000000 +1100
-+++ xorg-server/hw/xfree86/common/xf86Module.h 2011-03-09 13:13:06.226385017 
+1100
-@@ -83,7 +83,7 @@
+--- a/hw/xfree86/common/xf86Module.h
++++ b/hw/xfree86/common/xf86Module.h
+@@ -83,7 +83,7 @@ typedef enum {
   */
  #define ABI_ANSIC_VERSION     SET_ABI_VERSION(0, 4)
  #define ABI_VIDEODRV_VERSION  SET_ABI_VERSION(10, 0)
@@ -3574,11 +3561,9 @@ Index: xorg-server/hw/xfree86/common/xf86Module.h
  #define ABI_EXTENSION_VERSION SET_ABI_VERSION(5, 0)
  #define ABI_FONT_VERSION      SET_ABI_VERSION(0, 6)
  
-Index: xorg-server/hw/xfree86/common/xf86Xinput.c
-===================================================================
---- xorg-server.orig/hw/xfree86/common/xf86Xinput.c    2011-02-28 
16:57:00.000000000 +1100
-+++ xorg-server/hw/xfree86/common/xf86Xinput.c 2011-03-09 13:11:48.113385173 
+1100
-@@ -1352,6 +1352,16 @@
+--- a/hw/xfree86/common/xf86Xinput.c
++++ b/hw/xfree86/common/xf86Xinput.c
+@@ -1352,6 +1352,16 @@ xf86InitValuatorAxisStruct(DeviceIntPtr
                           max_res, mode);
  }
  
@@ -3595,7 +3580,7 @@ Index: xorg-server/hw/xfree86/common/xf86Xinput.c


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/e1q0day-00060j...@alioth.debian.org

Reply via email to