rpms/xorg-x11-server/devel xserver-1.6.0-xinerama-crashes.patch, NONE, 1.1 xserver-1.6.0-xinerama-cursors.patch, NONE, 1.1 xserver-1.6.0-xtest-pointerscreen.patch, NONE, 1.1 xorg-x11-server.spec, 1.426, 1.427

Peter Hutterer whot at fedoraproject.org
Wed Mar 25 06:49:39 UTC 2009


Author: whot

Update of /cvs/pkgs/rpms/xorg-x11-server/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv15405

Modified Files:
	xorg-x11-server.spec 
Added Files:
	xserver-1.6.0-xinerama-crashes.patch 
	xserver-1.6.0-xinerama-cursors.patch 
	xserver-1.6.0-xtest-pointerscreen.patch 
Log Message:
* Wed Mar 25 2009 Peter Hutterer <peter.hutterer at redhat.com> 1.6.0-15
- xserver-1.6.0-xtest-pointerscreen.patch: set POINTER_SCREEN flag for core
  XTestFakeInput events (#490984)
- xserver-1.6.0-xinerama-cursors.patch: don't display SW cursors when
  switching screens.
- xserver-1.6.0-xinerama-crashes.patch: don't crash on key repeats in xinerama
  setups.



xserver-1.6.0-xinerama-crashes.patch:

--- NEW FILE xserver-1.6.0-xinerama-crashes.patch ---
>From 24e682d0fcc98d7c3f63fa484cc28285df48b499 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at who-t.net>
Date: Wed, 25 Mar 2009 13:08:27 +1000
Subject: [PATCH] dix: ignore non-pointer events in XineramaCheckMotion (#20557)

Note that deviceKeyButtonPointer and keyButtonPointer have the same wire
layout, so we only need to check for event types.

X.Org Bug 20557 <http://bugs.freedesktop.org/show_bug.cgi?id=20557>

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 dix/events.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/dix/events.c b/dix/events.c
index 6743cae..63b0674 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -625,6 +625,23 @@ XineramaCheckMotion(xEvent *xE, DeviceIntPtr pDev)
 
     if (xE && !syncEvents.playingEvents)
     {
+        /* GetPointerEvents() guarantees that pointer events have the correct
+           rootX/Y set already. */
+        switch(xE->u.u.type)
+        {
+            case ButtonPress:
+            case ButtonRelease:
+            case MotionNotify:
+                break;
+            default:
+                if (xE->u.u.type == DeviceButtonPress ||
+                        xE->u.u.type == DeviceButtonRelease ||
+                        xE->u.u.type == DeviceMotionNotify)
+                    break;
+                /* all other events return FALSE */
+                return FALSE;
+        }
+
 	/* Motion events entering DIX get translated to Screen 0
 	   coordinates.  Replayed events have already been
 	   translated since they've entered DIX before */
-- 
1.6.0.6


xserver-1.6.0-xinerama-cursors.patch:

--- NEW FILE xserver-1.6.0-xinerama-cursors.patch ---
>From 3323f7ac880d5a8261d5b22059374fc9de8ca683 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at who-t.net>
Date: Wed, 25 Mar 2009 12:55:42 +1000
Subject: [PATCH] xfree86: fix SWCursor check in xf86CursorSetCursor.

Wrong check for inputInfo.pointer resulted in a SW cursor being rendered when
the pointer left the screen (in a Xinerama setup).
We must call the sprite rendering function if
- SW cursors are enabled, or
- The current device is not the VCP and not attached to the VCP.

Reported-by: Gordon Yuan <GordonYuan at viatech.com.cn>
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 hw/xfree86/ramdac/xf86Cursor.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c
index 2b73b16..896ed37 100644
--- a/hw/xfree86/ramdac/xf86Cursor.c
+++ b/hw/xfree86/ramdac/xf86Cursor.c
@@ -302,9 +302,9 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
 
 
     if (pCurs == NullCursor) {	/* means we're supposed to remove the cursor */
-        if (ScreenPriv->SWCursor || pDev != inputInfo.pointer)
-            (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor,
-                                                  x, y);
+        if (ScreenPriv->SWCursor ||
+            !(pDev == inputInfo.pointer || !pDev->isMaster && pDev->u.master == inputInfo.pointer))
+                (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor, x, y);
         else if (ScreenPriv->isUp) {
             xf86SetCursor(pScreen, NullCursor, x, y);
             ScreenPriv->isUp = FALSE;
-- 
1.6.0.6


xserver-1.6.0-xtest-pointerscreen.patch:

--- NEW FILE xserver-1.6.0-xtest-pointerscreen.patch ---
>From c3e5af42be915b27056644c2df6a4ce30b4ab5f3 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at who-t.net>
Date: Wed, 25 Mar 2009 15:51:43 +1000
Subject: [PATCH] Xext: set POINTER_SCREEN flag in XTestFakeInput if necessary. (RH #490984)

The POINTER_SCREEN flag must be set explicitly for XTest core events to avoid
out-of-range events when the lastSlave was an SD with an explicit axis range.
Device events sent through XTest don't need this flag, they are expected to be
in the valuator range of the device anyway.

Red Hat Bug 490984 <https://bugzilla.redhat.com/show_bug.cgi?id=490984>

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 Xext/xtest.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/Xext/xtest.c b/Xext/xtest.c
index a7f3830..3ff02ed 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -161,6 +161,7 @@ ProcXTestFakeInput(client)
     int nevents;
     int i;
     int base = 0;
+    int flags = 0;
 
     nev = (stuff->length << 2) - sizeof(xReq);
     if ((nev % sizeof(xEvent)) || !nev)
@@ -211,8 +212,14 @@ ProcXTestFakeInput(client)
                 client->errorValue = ev->u.u.type;
                 return BadValue;
             }
+
+            if (ev->u.u.detail == xFalse)
+                flags |= POINTER_ABSOLUTE;
         } else
+        {
             firstValuator = 0;
+            flags |= POINTER_ABSOLUTE;
+        }
 
         if (nev == 1 && type == XI_DeviceMotionNotify && !dev->valuator)
         {
@@ -281,6 +288,8 @@ ProcXTestFakeInput(client)
                 valuators[1] = ev->u.keyButtonPointer.rootY;
                 numValuators = 2;
                 firstValuator = 0;
+                if (ev->u.u.detail == xFalse)
+                    flags = POINTER_ABSOLUTE | POINTER_SCREEN;
                 break;
             default:
                 client->errorValue = ev->u.u.type;
@@ -378,14 +387,13 @@ ProcXTestFakeInput(client)
     GetEventList(&events);
     switch(type) {
         case MotionNotify:
-            nevents = GetPointerEvents(events, dev, type, 0,
-                            (ev->u.u.detail == xFalse) ?  POINTER_ABSOLUTE : 0,
+            nevents = GetPointerEvents(events, dev, type, 0, flags,
                             firstValuator, numValuators, valuators);
             break;
         case ButtonPress:
         case ButtonRelease:
             nevents = GetPointerEvents(events, dev, type, ev->u.u.detail,
-                                       POINTER_ABSOLUTE, firstValuator,
+                                       flags, firstValuator,
                                        numValuators, valuators);
             break;
         case KeyPress:
-- 
1.6.0.6



Index: xorg-x11-server.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-server/devel/xorg-x11-server.spec,v
retrieving revision 1.426
retrieving revision 1.427
diff -u -r1.426 -r1.427
--- xorg-x11-server.spec	18 Mar 2009 13:36:23 -0000	1.426
+++ xorg-x11-server.spec	25 Mar 2009 06:49:08 -0000	1.427
@@ -19,7 +19,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.6.0
-Release:   14%{?dist}
+Release:   15%{?dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X
@@ -101,6 +101,13 @@
 Patch6022: xserver-1.6.0-primary.patch
 Patch6023: xserver-1.6.0-selinux-destroy.patch
 
+Patch6024: xserver-1.6.0-xinerama-cursors.patch
+# https://bugzilla.redhat.com/show_bug.cgi?id=490984
+Patch6025: xserver-1.6.0-xtest-pointerscreen.patch
+# http://bugs.freedesktop.org/show_bug.cgi?id=20557
+Patch6026: xserver-1.6.0-xinerama-crashes.patch
+
+
 %define moduledir	%{_libdir}/xorg/modules
 %define drimoduledir	%{_libdir}/dri
 %define sdkdir		%{_includedir}/xorg
@@ -521,6 +528,14 @@
 
 
 %changelog
+* Wed Mar 25 2009 Peter Hutterer <peter.hutterer at redhat.com> 1.6.0-15
+- xserver-1.6.0-xtest-pointerscreen.patch: set POINTER_SCREEN flag for core
+  XTestFakeInput events (#490984)
+- xserver-1.6.0-xinerama-cursors.patch: don't display SW cursors when
+  switching screens.
+- xserver-1.6.0-xinerama-crashes.patch: don't crash on key repeats in xinerama
+  setups.
+
 * Wed Mar 18 2009 Adam Jackson <ajax at redhat.com> 1.6.0-14
 - s390 fixes (Karsten Hopp)
 




More information about the fedora-extras-commits mailing list