xorg-server: Changes to 'ubuntu'
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.douglas@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.douglas@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,
¶m, &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
Reply to: