aboutsummaryrefslogtreecommitdiff
path: root/x11-servers
diff options
context:
space:
mode:
authorNiclas Zeising <zeising@FreeBSD.org>2013-06-26 20:00:39 +0000
committerNiclas Zeising <zeising@FreeBSD.org>2013-06-26 20:00:39 +0000
commitc20d929bcca94584e737103730881e64eac0437a (patch)
tree8a84574e3adc1208d073ed76abdc68cc273becb8 /x11-servers
parentfb248de08a6f576a6012aaa4b53acdf41b11c4a8 (diff)
downloadports-c20d929bcca94584e737103730881e64eac0437a.tar.gz
ports-c20d929bcca94584e737103730881e64eac0437a.zip
Readd the dix_events.c patch that was removed with the xorg update.
There have been some reports of problems with pointer focus and other related issues in Mwm and open-motif without this patch. Bump portrevision for old xorg. PR: ports/179397 Submitted by: William Bulley <web@umich.edu>
Notes
Notes: svn path=/head/; revision=321811
Diffstat (limited to 'x11-servers')
-rw-r--r--x11-servers/xorg-server/Makefile5
-rw-r--r--x11-servers/xorg-server/files/extra-dix_events.c89
2 files changed, 92 insertions, 2 deletions
diff --git a/x11-servers/xorg-server/Makefile b/x11-servers/xorg-server/Makefile
index 182a9416ccfc..6315d00f6da4 100644
--- a/x11-servers/xorg-server/Makefile
+++ b/x11-servers/xorg-server/Makefile
@@ -27,14 +27,15 @@ PLIST_SUB+= OLD="@comment " NEW=""
EXTRA_PATCHES+= ${FILESDIR}/extra-clang
.else
XORG_VERSION= 1.7.7
-XORG_REVISION= 7
+XORG_REVISION= 8
PLIST_SUB+= OLD="" NEW="@comment "
EXTRA_PATCHES+= ${FILESDIR}/extra-Xext-xace.c \
${FILESDIR}/extra-Xserver-hw-xfree86-os-support-bsd-sparc64_video.c \
${FILESDIR}/extra-Xserver-os-xprintf.c \
${FILESDIR}/extra-include_eventstr.h \
${FILESDIR}/extra-os-utils.c \
- ${FILESDIR}/extra-servermd.h
+ ${FILESDIR}/extra-servermd.h \
+ ${FILESDIR}/extra-dix_events.c
.endif
USE_BZIP2= yes
diff --git a/x11-servers/xorg-server/files/extra-dix_events.c b/x11-servers/xorg-server/files/extra-dix_events.c
new file mode 100644
index 000000000000..caa7a99ec255
--- /dev/null
+++ b/x11-servers/xorg-server/files/extra-dix_events.c
@@ -0,0 +1,89 @@
+--- dix/events.c.orig 2010-05-04 02:47:57.000000000 +0200
++++ dix/events.c 2012-04-24 12:59:22.000000000 +0200
+@@ -3440,7 +3440,6 @@ CheckPassiveGrabsOnWindow(
+ {
+ DeviceIntPtr gdev;
+ XkbSrvInfoPtr xkbi = NULL;
+- Mask mask = 0;
+
+ gdev= grab->modifierDevice;
+ if (grab->grabtype == GRABTYPE_CORE)
+@@ -3555,9 +3554,6 @@ CheckPassiveGrabsOnWindow(
+ }
+ xE = &core;
+ count = 1;
+- mask = grab->eventMask;
+- if (grab->ownerEvents)
+- mask |= pWin->eventMask;
+ } else if (match & XI2_MATCH)
+ {
+ rc = EventToXI2((InternalEvent*)event, &xE);
+@@ -3569,34 +3565,6 @@ CheckPassiveGrabsOnWindow(
+ 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];
+-
+- if (grab->ownerEvents && wOtherInputMasks(grab->window))
+- {
+- InputClientsPtr icp =
+- wOtherInputMasks(grab->window)->inputClients;
+-
+- while(icp)
+- {
+- if (rClient(icp) == rClient(grab))
+- {
+- int evtype = (xE) ? ((xGenericEvent*)xE)->evtype : event->type;
+- mask |= icp->xi2mask[device->id][evtype/8];
+- break;
+- }
+-
+- icp = icp->next;
+- }
+- }
+ } else
+ {
+ rc = EventToXI((InternalEvent*)event, &xE, &count);
+@@ -3607,23 +3575,6 @@ CheckPassiveGrabsOnWindow(
+ "(%d, %d).\n", device->name, event->type, rc);
+ continue;
+ }
+- mask = grab->eventMask;
+- if (grab->ownerEvents && wOtherInputMasks(grab->window))
+- {
+- InputClientsPtr icp =
+- wOtherInputMasks(grab->window)->inputClients;
+-
+- while(icp)
+- {
+- if (rClient(icp) == rClient(grab))
+- {
+- mask |= icp->mask[device->id];
+- break;
+- }
+-
+- icp = icp->next;
+- }
+- }
+ }
+
+ (*grabinfo->ActivateGrab)(device, grab, currentTime, TRUE);
+@@ -3632,7 +3583,8 @@ CheckPassiveGrabsOnWindow(
+ {
+ FixUpEventFromWindow(device, xE, grab->window, None, TRUE);
+
+- TryClientEvents(rClient(grab), device, xE, count, mask,
++ TryClientEvents(rClient(grab), device, xE, count,
++ GetEventFilter(device, xE),
+ GetEventFilter(device, xE), grab);
+ }
+