Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jun 2013 20:00:39 +0000 (UTC)
From:      Niclas Zeising <zeising@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r321811 - in head/x11-servers/xorg-server: . files
Message-ID:  <201306262000.r5QK0dCo046099@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: zeising
Date: Wed Jun 26 20:00:39 2013
New Revision: 321811
URL: http://svnweb.freebsd.org/changeset/ports/321811

Log:
  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>

Added:
  head/x11-servers/xorg-server/files/extra-dix_events.c
     - copied unchanged from r319054, head/x11-servers/xorg-server/files/extra-dix_events.c
Modified:
  head/x11-servers/xorg-server/Makefile

Modified: head/x11-servers/xorg-server/Makefile
==============================================================================
--- head/x11-servers/xorg-server/Makefile	Wed Jun 26 19:25:10 2013	(r321810)
+++ head/x11-servers/xorg-server/Makefile	Wed Jun 26 20:00:39 2013	(r321811)
@@ -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

Copied: head/x11-servers/xorg-server/files/extra-dix_events.c (from r319054, head/x11-servers/xorg-server/files/extra-dix_events.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11-servers/xorg-server/files/extra-dix_events.c	Wed Jun 26 20:00:39 2013	(r321811, copy of r319054, head/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);
+             }
+ 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306262000.r5QK0dCo046099>