debian/changelog | 7 + debian/patches/500_xi2.1.patch | 145 ++++++++++++++++++++++++++++++++++------- 2 files changed, 129 insertions(+), 23 deletions(-)
New commits: commit 40020b808fa2c02cb4d34cdb4e8738bd6c535f8b Author: Chase Douglas <chase.doug...@canonical.com> Date: Mon Mar 7 14:28:51 2011 -0500 Prevent pointer motion when more than one touch on touchpad. (LP: #730881) diff --git a/debian/changelog b/debian/changelog index 8b6920e..d117a18 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,8 +6,9 @@ xorg-server (2:1.9.99.902-2ubuntu2) UNRELEASED; urgency=low * Check slave device touch selection mask during implicit grab. (LP: #725241) * Cancel slave touch selections when attached to master device. (LP: #723904) * Check for touch selections only when there are active clients. (LP: #723900) + * Prevent pointer motion when more than one touch on touchpad. - -- Chase Douglas <chase.doug...@ubuntu.com> Fri, 04 Mar 2011 14:18:45 -0500 + -- Chase Douglas <chase.doug...@ubuntu.com> Mon, 07 Mar 2011 14:28:02 -0500 xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch index 0391ab6..2b22e6f 100644 --- a/debian/patches/500_xi2.1.patch +++ b/debian/patches/500_xi2.1.patch @@ -3107,7 +3107,19 @@ } /** -@@ -1165,7 +1170,16 @@ GetPointerEvents(EventList *events, Devi +@@ -1116,7 +1121,10 @@ GetPointerEvents(EventList *events, Devi + switch (type) + { + case MotionNotify: +- if (!mask_in || valuator_mask_num_valuators(mask_in) <= 0) ++ if (!mask_in || valuator_mask_num_valuators(mask_in) <= 0 || ++ (pDev->touch && pDev->touch->active_touches > 1 && ++ (pDev->touch->mode == XIDependentTouch || ++ pDev->touch->mode == XISemiMultitouch))) + return 0; + break; + case ButtonPress: +@@ -1165,7 +1173,16 @@ GetPointerEvents(EventList *events, Devi } } @@ -3125,7 +3137,7 @@ moveAbsolute(pDev, &x, &y, &mask); } else { if (flags & POINTER_ACCELERATE) { -@@ -1286,6 +1300,130 @@ GetProximityEvents(EventList *events, De +@@ -1286,6 +1303,130 @@ GetProximityEvents(EventList *events, De return num_events; } commit 2ea1b7de089075fe3281bbb9251e7d02deffaae0 Author: Chase Douglas <chase.doug...@canonical.com> Date: Fri Mar 4 14:19:52 2011 -0500 Check for touch selections only when there are active clients. (LP: #723900) diff --git a/debian/changelog b/debian/changelog index ccf5ea3..8b6920e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,8 +5,9 @@ xorg-server (2:1.9.99.902-2ubuntu2) UNRELEASED; urgency=low * Cancel touch clients if emulated button press is delivered. (LP: #725191) * Check slave device touch selection mask during implicit grab. (LP: #725241) * Cancel slave touch selections when attached to master device. (LP: #723904) + * Check for touch selections only when there are active clients. (LP: #723900) - -- Chase Douglas <chase.doug...@ubuntu.com> Fri, 04 Mar 2011 11:36:19 -0500 + -- Chase Douglas <chase.doug...@ubuntu.com> Fri, 04 Mar 2011 14:18:45 -0500 xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch index ecc640f..0391ab6 100644 --- a/debian/patches/500_xi2.1.patch +++ b/debian/patches/500_xi2.1.patch @@ -2415,7 +2415,7 @@ return; event->root = RootWindow(pSprite)->drawable.id; -@@ -2369,12 +2490,115 @@ DeliverDeviceEvents(WindowPtr pWin, Inte +@@ -2369,12 +2490,119 @@ DeliverDeviceEvents(WindowPtr pWin, Inte xEvent core; xEvent *xE = NULL; int rc, mask, count = 0; @@ -2427,7 +2427,9 @@ + /* If we are replaying a pointer emulated button press event, find the first + * pointer or touch selecting client. */ + if (syncEvents.playingEvents && event->any.type == ET_ButtonPress && -+ (event->device_event.flags & XIPointerEmulated)) ++ (event->device_event.flags & XIPointerEmulated) && ++ event->device_event.touchpoint && ++ event->device_event.touchpoint->active_clients > 0) + { + QdEventPtr qe; + DeviceEvent *te; @@ -2499,7 +2501,9 @@ + } + } + else if (IsPointerEvent(event) && !syncEvents.playingEvents && -+ (event->device_event.flags & XIPointerEmulated)) ++ (event->device_event.flags & XIPointerEmulated) && ++ event->device_event.touchpoint && ++ event->device_event.touchpoint->active_clients > 0) + { + /* Non-grabbed emulated pointer event, so check for touch selections. */ + check_touch = TRUE; @@ -2532,7 +2536,7 @@ { /* XI2 events first */ if (mask & XI2_MASK) -@@ -2383,10 +2607,25 @@ DeliverDeviceEvents(WindowPtr pWin, Inte +@@ -2383,10 +2611,25 @@ DeliverDeviceEvents(WindowPtr pWin, Inte rc = EventToXI2(event, &xi2); if (rc == Success) { @@ -2560,7 +2564,7 @@ filter, grab); free(xi2); if (deliveries > 0) -@@ -2439,6 +2678,14 @@ DeliverDeviceEvents(WindowPtr pWin, Inte +@@ -2439,6 +2682,14 @@ DeliverDeviceEvents(WindowPtr pWin, Inte goto unwind; } } @@ -2575,7 +2579,7 @@ child = pWin->drawable.id; pWin = pWin->parent; -@@ -2591,7 +2838,7 @@ XYToWindow(SpritePtr pSprite, int x, int +@@ -2591,7 +2842,7 @@ XYToWindow(SpritePtr pSprite, int x, int else pWin = pWin->nextSib; } @@ -2584,7 +2588,7 @@ } /** -@@ -2629,7 +2876,8 @@ ActivateFocusInGrab(DeviceIntPtr dev, Wi +@@ -2629,7 +2880,8 @@ ActivateFocusInGrab(DeviceIntPtr dev, Wi event.deviceid = dev->id; event.sourceid = dev->id; event.detail.button = 0; @@ -2594,7 +2598,7 @@ if (rc) DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveUngrab); return rc; -@@ -2666,7 +2914,8 @@ ActivateEnterGrab(DeviceIntPtr dev, Wind +@@ -2666,7 +2918,8 @@ ActivateEnterGrab(DeviceIntPtr dev, Wind event.deviceid = dev->id; event.sourceid = dev->id; event.detail.button = 0; @@ -2604,7 +2608,7 @@ if (rc) DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveGrab); return rc; -@@ -3353,7 +3602,7 @@ GrabPtr +@@ -3353,7 +3606,7 @@ GrabPtr CheckPassiveGrabsOnWindow( WindowPtr pWin, DeviceIntPtr device, @@ -2613,7 +2617,7 @@ BOOL checkCore, BOOL activate) { -@@ -3370,9 +3619,22 @@ CheckPassiveGrabsOnWindow( +@@ -3370,9 +3623,22 @@ CheckPassiveGrabsOnWindow( return NULL; /* Fill out the grab details, but leave the type for later before * comparing */ @@ -2637,7 +2641,7 @@ tempGrab.detail.pMask = NULL; tempGrab.modifiersDetail.pMask = NULL; tempGrab.next = NULL; -@@ -3380,6 +3642,9 @@ CheckPassiveGrabsOnWindow( +@@ -3380,6 +3646,9 @@ CheckPassiveGrabsOnWindow( { DeviceIntPtr gdev; XkbSrvInfoPtr xkbi = NULL; @@ -2647,7 +2651,7 @@ gdev= grab->modifierDevice; if (grab->grabtype == GRABTYPE_CORE) -@@ -3405,16 +3670,15 @@ CheckPassiveGrabsOnWindow( +@@ -3405,16 +3674,15 @@ CheckPassiveGrabsOnWindow( tempGrab.modifiersDetail.exact = xkbi ? xkbi->state.grab_mods : 0; /* Check for XI2 and XI grabs first */ @@ -2666,7 +2670,7 @@ (GrabMatchesSecond(&tempGrab, grab, FALSE))) match = XI_MATCH; } -@@ -3423,125 +3687,143 @@ CheckPassiveGrabsOnWindow( +@@ -3423,125 +3691,143 @@ CheckPassiveGrabsOnWindow( if (!match && checkCore) { tempGrab.grabtype = GRABTYPE_CORE; @@ -2907,7 +2911,7 @@ } return NULL; #undef CORE_MATCH -@@ -3580,8 +3862,13 @@ CheckDeviceGrabs(DeviceIntPtr device, De +@@ -3580,8 +3866,13 @@ CheckDeviceGrabs(DeviceIntPtr device, De { int i; WindowPtr pWin = NULL; @@ -2922,7 +2926,7 @@ if (event->type != ET_ButtonPress && event->type != ET_KeyPress) -@@ -3609,7 +3896,8 @@ CheckDeviceGrabs(DeviceIntPtr device, De +@@ -3609,7 +3900,8 @@ CheckDeviceGrabs(DeviceIntPtr device, De for (; i < focus->traceGood; i++) { pWin = focus->trace[i]; @@ -2932,7 +2936,7 @@ return TRUE; } -@@ -3619,11 +3907,54 @@ CheckDeviceGrabs(DeviceIntPtr device, De +@@ -3619,11 +3911,54 @@ CheckDeviceGrabs(DeviceIntPtr device, De return FALSE; } @@ -2990,7 +2994,7 @@ } return FALSE; -@@ -3745,6 +4076,17 @@ DeliverGrabbedEvent(InternalEvent *event +@@ -3745,6 +4080,17 @@ DeliverGrabbedEvent(InternalEvent *event grabinfo = &thisDev->deviceGrab; grab = grabinfo->grab; @@ -3008,7 +3012,7 @@ if (grab->ownerEvents) { WindowPtr focus; -@@ -3821,6 +4163,9 @@ DeliverGrabbedEvent(InternalEvent *event +@@ -3821,6 +4167,9 @@ DeliverGrabbedEvent(InternalEvent *event mask = grab->xi2mask[XIAllDevices][evtype/8] | grab->xi2mask[XIAllMasterDevices][evtype/8] | grab->xi2mask[thisDev->id][evtype/8]; @@ -3018,7 +3022,7 @@ /* try XI2 event */ FixUpEventFromWindow(pSprite, xi2, grab->window, None, TRUE); /* XXX: XACE */ -@@ -4955,7 +5300,7 @@ InitEvents(void) +@@ -4955,7 +5304,7 @@ InitEvents(void) free(syncEvents.pending); syncEvents.pending = next; } commit 2c05aef93c79f1eec6e8519b2ce973b5a694ccd3 Author: Chase Douglas <chase.doug...@canonical.com> Date: Fri Mar 4 14:13:19 2011 -0500 Cancel slave touch selections when attached to master device. (LP: #723904) diff --git a/debian/changelog b/debian/changelog index 5db48f5..ccf5ea3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,8 +4,9 @@ xorg-server (2:1.9.99.902-2ubuntu2) UNRELEASED; urgency=low upstream since 1.6.1.901. * Cancel touch clients if emulated button press is delivered. (LP: #725191) * Check slave device touch selection mask during implicit grab. (LP: #725241) + * Cancel slave touch selections when attached to master device. (LP: #723904) - -- Chase Douglas <chase.doug...@ubuntu.com> Mon, 28 Feb 2011 12:30:07 -0500 + -- Chase Douglas <chase.doug...@ubuntu.com> Fri, 04 Mar 2011 11:36:19 -0500 xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch index b54a574..ecc640f 100644 --- a/debian/patches/500_xi2.1.patch +++ b/debian/patches/500_xi2.1.patch @@ -2007,6 +2007,78 @@ /* * Check if the given buffer contains elements between low (inclusive) and * high (inclusive) only. +@@ -2375,6 +2535,58 @@ RecalculateMasterButtons(DeviceIntPtr sl + } + } + ++static void ++DropTouchSelectionsOnWindow(DeviceIntPtr dev, WindowPtr win) ++{ ++ WindowPtr child; ++ ++ if (wOtherInputMasks(win) && ++ BitIsOn(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchBegin)) ++ { ++ InputClientsPtr client = wOtherInputMasks(win)->inputClients; ++ ++ /* Don't bother deleting client record if there are no other ++ * selections. The client will likely reselect when it gets the ++ * HierarchyChange event. */ ++ while (client) ++ { ++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchBegin); ++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchEnd); ++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchOwnership); ++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchUpdate); ++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchUpdateUnowned); ++ ++ client = client->next; ++ } ++ ++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchBegin); ++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchEnd); ++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchOwnership); ++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchUpdate); ++ ClearBit(wOtherInputMasks(win)->xi2mask[dev->id], XI_TouchUpdateUnowned); ++ } ++ ++ child = win->firstChild; ++ while (child) ++ { ++ DropTouchSelectionsOnWindow(dev, child); ++ child = child->nextSib; ++ } ++} ++ ++static void ++DropTouchSelections(DeviceIntPtr dev) ++{ ++ int i; ++ ++ for (i = 0; i < screenInfo.numScreens; i++) ++ { ++ WindowPtr win = screenInfo.screens[i]->root; ++ ++ DropTouchSelectionsOnWindow(dev, win); ++ } ++} ++ + /** + * 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 @@ AttachDevice(ClientPtr client, DeviceInt + dev->spriteInfo->spriteOwner = FALSE; + + RecalculateMasterButtons(master); ++ ++ /* Only one client may select for touch events from a device on a window ++ * at any time. Reattaching could break this, so drop all touch event ++ * selections for this specific slave device on all windows. */ ++ if (dev->touch) ++ DropTouchSelections(dev); + } + + /* XXX: in theory, the MD should change back to its old, original --- a/dix/eventconvert.c +++ b/dix/eventconvert.c @@ -55,6 +55,7 @@ static int eventToKeyButtonPointer(Devic commit d9521df32c0870afd8a8a3f60857b74ac5e4f565 Author: Chase Douglas <chase.doug...@canonical.com> Date: Mon Feb 28 12:31:17 2011 -0500 Check slave device touch selection mask during implicit grab. (LP: #725241) diff --git a/debian/changelog b/debian/changelog index 881acaa..5db48f5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,8 +3,9 @@ xorg-server (2:1.9.99.902-2ubuntu2) UNRELEASED; urgency=low * Remove 169_mipointer_nullptr_checks.patch, fixed in another way upstream since 1.6.1.901. * Cancel touch clients if emulated button press is delivered. (LP: #725191) + * Check slave device touch selection mask during implicit grab. (LP: #725241) - -- Chase Douglas <chase.doug...@ubuntu.com> Mon, 28 Feb 2011 12:27:37 -0500 + -- Chase Douglas <chase.doug...@ubuntu.com> Mon, 28 Feb 2011 12:30:07 -0500 xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch index 06a26fa..b54a574 100644 --- a/debian/patches/500_xi2.1.patch +++ b/debian/patches/500_xi2.1.patch @@ -2936,7 +2936,17 @@ if (grab->ownerEvents) { WindowPtr focus; -@@ -4955,7 +5297,7 @@ InitEvents(void) +@@ -3821,6 +4163,9 @@ DeliverGrabbedEvent(InternalEvent *event + mask = grab->xi2mask[XIAllDevices][evtype/8] | + grab->xi2mask[XIAllMasterDevices][evtype/8] | + grab->xi2mask[thisDev->id][evtype/8]; ++ if (IsTouchEvent(event)) ++ mask |= ++ grab->xi2mask[event->device_event.sourceid][evtype/8]; + /* try XI2 event */ + FixUpEventFromWindow(pSprite, xi2, grab->window, None, TRUE); + /* XXX: XACE */ +@@ -4955,7 +5300,7 @@ InitEvents(void) free(syncEvents.pending); syncEvents.pending = next; } commit a57f9082e4268e0ca0ba68459ddc2c5d7bf9b235 Author: Chase Douglas <chase.doug...@canonical.com> Date: Mon Feb 28 12:29:30 2011 -0500 Cancel touch clients if emulated button press is delivered. (LP: #725191) diff --git a/debian/changelog b/debian/changelog index 85d1d3a..881acaa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,8 +2,9 @@ xorg-server (2:1.9.99.902-2ubuntu2) UNRELEASED; urgency=low * Remove 169_mipointer_nullptr_checks.patch, fixed in another way upstream since 1.6.1.901. + * Cancel touch clients if emulated button press is delivered. (LP: #725191) - -- Timo Aaltonen <tjaal...@ubuntu.com> Fri, 25 Feb 2011 13:17:15 +0200 + -- Chase Douglas <chase.doug...@ubuntu.com> Mon, 28 Feb 2011 12:27:37 -0500 xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low diff --git a/debian/patches/500_xi2.1.patch b/debian/patches/500_xi2.1.patch index bca9ac3..06a26fa 100644 --- a/debian/patches/500_xi2.1.patch +++ b/debian/patches/500_xi2.1.patch @@ -2343,7 +2343,7 @@ return; event->root = RootWindow(pSprite)->drawable.id; -@@ -2369,12 +2490,112 @@ DeliverDeviceEvents(WindowPtr pWin, Inte +@@ -2369,12 +2490,115 @@ DeliverDeviceEvents(WindowPtr pWin, Inte xEvent core; xEvent *xE = NULL; int rc, mask, count = 0; @@ -2413,9 +2413,12 @@ + ti->emulate_pointer = FALSE; + if (IsPointerEvent(event)) + return 0; ++ } else { ++ ti->owner = -1; ++ ti->active_clients = 0; ++ if (IsTouchEvent(event)) ++ return 0; + } -+ else if (IsTouchEvent(event)) -+ return 0; + + break; + } @@ -2457,7 +2460,7 @@ { /* XI2 events first */ if (mask & XI2_MASK) -@@ -2383,10 +2604,25 @@ DeliverDeviceEvents(WindowPtr pWin, Inte +@@ -2383,10 +2607,25 @@ DeliverDeviceEvents(WindowPtr pWin, Inte rc = EventToXI2(event, &xi2); if (rc == Success) { @@ -2485,7 +2488,7 @@ filter, grab); free(xi2); if (deliveries > 0) -@@ -2439,6 +2675,14 @@ DeliverDeviceEvents(WindowPtr pWin, Inte +@@ -2439,6 +2678,14 @@ DeliverDeviceEvents(WindowPtr pWin, Inte goto unwind; } } @@ -2500,7 +2503,7 @@ child = pWin->drawable.id; pWin = pWin->parent; -@@ -2591,7 +2835,7 @@ XYToWindow(SpritePtr pSprite, int x, int +@@ -2591,7 +2838,7 @@ XYToWindow(SpritePtr pSprite, int x, int else pWin = pWin->nextSib; } @@ -2509,7 +2512,7 @@ } /** -@@ -2629,7 +2873,8 @@ ActivateFocusInGrab(DeviceIntPtr dev, Wi +@@ -2629,7 +2876,8 @@ ActivateFocusInGrab(DeviceIntPtr dev, Wi event.deviceid = dev->id; event.sourceid = dev->id; event.detail.button = 0; @@ -2519,7 +2522,7 @@ if (rc) DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveUngrab); return rc; -@@ -2666,7 +2911,8 @@ ActivateEnterGrab(DeviceIntPtr dev, Wind +@@ -2666,7 +2914,8 @@ ActivateEnterGrab(DeviceIntPtr dev, Wind event.deviceid = dev->id; event.sourceid = dev->id; event.detail.button = 0; @@ -2529,7 +2532,7 @@ if (rc) DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveGrab); return rc; -@@ -3353,7 +3599,7 @@ GrabPtr +@@ -3353,7 +3602,7 @@ GrabPtr CheckPassiveGrabsOnWindow( WindowPtr pWin, DeviceIntPtr device, @@ -2538,7 +2541,7 @@ BOOL checkCore, BOOL activate) { -@@ -3370,9 +3616,22 @@ CheckPassiveGrabsOnWindow( +@@ -3370,9 +3619,22 @@ CheckPassiveGrabsOnWindow( return NULL; /* Fill out the grab details, but leave the type for later before * comparing */ @@ -2562,7 +2565,7 @@ tempGrab.detail.pMask = NULL; tempGrab.modifiersDetail.pMask = NULL; tempGrab.next = NULL; -@@ -3380,6 +3639,9 @@ CheckPassiveGrabsOnWindow( +@@ -3380,6 +3642,9 @@ CheckPassiveGrabsOnWindow( { DeviceIntPtr gdev; XkbSrvInfoPtr xkbi = NULL; @@ -2572,7 +2575,7 @@ gdev= grab->modifierDevice; if (grab->grabtype == GRABTYPE_CORE) -@@ -3405,16 +3667,15 @@ CheckPassiveGrabsOnWindow( +@@ -3405,16 +3670,15 @@ CheckPassiveGrabsOnWindow( tempGrab.modifiersDetail.exact = xkbi ? xkbi->state.grab_mods : 0; /* Check for XI2 and XI grabs first */ @@ -2591,7 +2594,7 @@ (GrabMatchesSecond(&tempGrab, grab, FALSE))) match = XI_MATCH; } -@@ -3423,125 +3684,143 @@ CheckPassiveGrabsOnWindow( +@@ -3423,125 +3687,143 @@ CheckPassiveGrabsOnWindow( if (!match && checkCore) { tempGrab.grabtype = GRABTYPE_CORE; @@ -2832,7 +2835,7 @@ } return NULL; #undef CORE_MATCH -@@ -3580,8 +3859,13 @@ CheckDeviceGrabs(DeviceIntPtr device, De +@@ -3580,8 +3862,13 @@ CheckDeviceGrabs(DeviceIntPtr device, De { int i; WindowPtr pWin = NULL; @@ -2847,7 +2850,7 @@ if (event->type != ET_ButtonPress && event->type != ET_KeyPress) -@@ -3609,7 +3893,8 @@ CheckDeviceGrabs(DeviceIntPtr device, De +@@ -3609,7 +3896,8 @@ CheckDeviceGrabs(DeviceIntPtr device, De for (; i < focus->traceGood; i++) { pWin = focus->trace[i]; @@ -2857,7 +2860,7 @@ return TRUE; } -@@ -3619,11 +3904,54 @@ CheckDeviceGrabs(DeviceIntPtr device, De +@@ -3619,11 +3907,54 @@ CheckDeviceGrabs(DeviceIntPtr device, De return FALSE; } @@ -2915,7 +2918,7 @@ } return FALSE; -@@ -3745,6 +4073,17 @@ DeliverGrabbedEvent(InternalEvent *event +@@ -3745,6 +4076,17 @@ DeliverGrabbedEvent(InternalEvent *event grabinfo = &thisDev->deviceGrab; grab = grabinfo->grab; @@ -2933,7 +2936,7 @@ if (grab->ownerEvents) { WindowPtr focus; -@@ -4955,7 +5294,7 @@ InitEvents(void) +@@ -4955,7 +5297,7 @@ InitEvents(void) free(syncEvents.pending); syncEvents.pending = next; } -- 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/e1pwgdr-0007wm...@alioth.debian.org