[arch-commits] Commit in xorg-server/trunk (PKGBUILD revert-351d11fd.patch)
Jan de Groot
jgc at archlinux.org
Mon Mar 8 21:57:53 UTC 2010
Date: Monday, March 8, 2010 @ 16:57:53
Author: jgc
Revision: 71727
upgpkg: xorg-server 1.7.5.901-2
Revert bugfix for upstream bug 25400, fixes issues with openbox, fluxbox and icewm. Re-introduces regressions with lesstif
Added:
xorg-server/trunk/revert-351d11fd.patch
Modified:
xorg-server/trunk/PKGBUILD
-----------------------+
PKGBUILD | 12 +++-
revert-351d11fd.patch | 127 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 136 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2010-03-08 20:59:03 UTC (rev 71726)
+++ PKGBUILD 2010-03-08 21:57:53 UTC (rev 71727)
@@ -3,7 +3,7 @@
pkgname=xorg-server
pkgver=1.7.5.901
-pkgrel=1
+pkgrel=2
pkgdesc="X.Org X servers"
arch=('i686' 'x86_64')
license=('custom')
@@ -21,16 +21,22 @@
xserver-1.7.1-libcrypto.patch
xserver-1.7.1-gamma-kdm-fix.patch
xvfb-run
- xvfb-run.1)
+ xvfb-run.1
+ revert-351d11fd.patch)
md5sums=('d436ce2f2239c196ee163c7c047c1dd2'
'1a336eb22e27cbf443ec5a2ecddfa93c'
'957d429cad03ac87281b7e40d963497c'
'8eae23916552e609c36ecae1827c2e9d'
'52fd3effd80d7bc6c1660d4ecf23d31c'
- '376c70308715cd2643f7bff936d9934b')
+ '376c70308715cd2643f7bff936d9934b'
+ '228fde17e31440bea7295bbcbf9edf9e')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # Temporaly revert this, avoid break fluxbox
+ patch -Rp1 -i "${srcdir}/revert-351d11fd.patch" || return 1
+
# Get rid of the ugly pattern
patch -Np3 -i "${srcdir}/xorg-redhat-die-ugly-pattern-die-die-die.patch" || return 1
Added: revert-351d11fd.patch
===================================================================
--- revert-351d11fd.patch (rev 0)
+++ revert-351d11fd.patch 2010-03-08 21:57:53 UTC (rev 71727)
@@ -0,0 +1,127 @@
+From 351d11fd466fae731df860a6ff4cf50ad565f43f Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Thu, 25 Feb 2010 02:49:21 +0000
+Subject: dix: Use DeliverGrabbedEvent for implicit passive grabs (#25400)
+
+A client requesting a GrabModeSync button grab, owner-events true, with only
+the ButtonRelease mask set would never receive the press event even if the
+grab window had the ButtonPress mask set.
+
+The protocol requires that if owner-events is true, then the delivery mask
+is the combination of the grab mask + the window event mask.
+
+DeliverGrabbedEvents does this already for us, checking first the delivery
+based on owner_events and then based on the grab mask. AFAICT, the device
+cannot enter the states FREEZE_BOTH_NEXT_EVENT or FREEZE_NEXT_EVENT that
+would be handled by DGE in any possible path here.
+
+Bonus point - CheckPassiveGrabsOnWindows suddenly becomes a lot lesss
+complicated.
+
+X.Org Bug 25400 <http://bugs.freedesktop.org/show_bug.cgi?id=25400>
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+Reviewed-by: Keith Packard <keithp at keithp.com>
+Signed-off-by: Keith Packard <keithp at keithp.com>
+(cherry picked from commit cf72b5437d2d620521279077a29c5df6d0fbb576)
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+diff --git a/dix/events.c b/dix/events.c
+index 02079be..c6aa4ab 100644
+--- a/dix/events.c
++++ b/dix/events.c
+@@ -3462,7 +3462,6 @@ CheckPassiveGrabsOnWindow(
+ {
+ DeviceIntPtr gdev;
+ XkbSrvInfoPtr xkbi = NULL;
+- Mask mask = 0;
+
+ gdev= grab->modifierDevice;
+ if (grab->grabtype == GRABTYPE_CORE)
+@@ -3515,10 +3514,6 @@ CheckPassiveGrabsOnWindow(
+ (grab->confineTo->realized &&
+ BorderSizeNotEmpty(device, grab->confineTo))))
+ {
+- int rc, count = 0;
+- xEvent *xE = NULL;
+- xEvent core;
+-
+ event->corestate &= 0x1f00;
+ event->corestate |= tempGrab.modifiersDetail.exact & (~0x1f00);
+ grabinfo = &device->deviceGrab;
+@@ -3565,62 +3560,8 @@ CheckPassiveGrabsOnWindow(
+ }
+
+
+- if (match & CORE_MATCH)
+- {
+- rc = EventToCore((InternalEvent*)event, &core);
+- if (rc != Success)
+- {
+- if (rc != BadMatch)
+- ErrorF("[dix] %s: core conversion failed in CPGFW "
+- "(%d, %d).\n", device->name, event->type, rc);
+- continue;
+- }
+- xE = &core;
+- count = 1;
+- mask = grab->eventMask;
+- } else if (match & XI2_MATCH)
+- {
+- rc = EventToXI2((InternalEvent*)event, &xE);
+- if (rc != Success)
+- {
+- if (rc != BadMatch)
+- ErrorF("[dix] %s: XI2 conversion failed in CPGFW "
+- "(%d, %d).\n", device->name, event->type, rc);
+- continue;
+- }
+- count = 1;
+-
+- /* FIXME: EventToXI2 returns NULL for enter events, so
+- * dereferencing the event is bad. Internal event types are
+- * aligned with core events, so the else clause is valid.
+- * long-term we should use internal events for enter/focus
+- * as well */
+- if (xE)
+- mask = grab->xi2mask[device->id][((xGenericEvent*)xE)->evtype/8];
+- else if (event->type == XI_Enter || event->type == XI_FocusIn)
+- mask = grab->xi2mask[device->id][event->type/8];
+- } else
+- {
+- rc = EventToXI((InternalEvent*)event, &xE, &count);
+- if (rc != Success)
+- {
+- if (rc != BadMatch)
+- ErrorF("[dix] %s: XI conversion failed in CPGFW "
+- "(%d, %d).\n", device->name, event->type, rc);
+- continue;
+- }
+- mask = grab->eventMask;
+- }
+-
+ (*grabinfo->ActivateGrab)(device, grab, currentTime, TRUE);
+-
+- if (xE)
+- {
+- FixUpEventFromWindow(device, xE, grab->window, None, TRUE);
+-
+- TryClientEvents(rClient(grab), device, xE, count, mask,
+- GetEventFilter(device, xE), grab);
+- }
++ DeliverGrabbedEvent((InternalEvent*)event, device, FALSE);
+
+ if (grabinfo->sync.state == FROZEN_NO_EVENT)
+ {
+@@ -3630,8 +3571,6 @@ CheckPassiveGrabsOnWindow(
+ grabinfo->sync.state = FROZEN_WITH_EVENT;
+ }
+
+- if (match & (XI_MATCH | XI2_MATCH))
+- xfree(xE); /* on core match xE == &core */
+ return TRUE;
+ }
+ }
+--
+cgit v0.8.3-6-g21f6
More information about the arch-commits
mailing list