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, ¶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 -- 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