* Wed Mar 25 2009 Peter Hutterer <peter.hutterer@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.
This commit is contained in:
parent
662973f97c
commit
ca7f815695
@ -19,7 +19,7 @@
|
|||||||
Summary: X.Org X11 X server
|
Summary: X.Org X11 X server
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
Version: 1.6.0
|
Version: 1.6.0
|
||||||
Release: 14%{?dist}
|
Release: 15%{?dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
@ -101,6 +101,13 @@ Patch6021: xserver-1.6.0-selinux-raw.patch
|
|||||||
Patch6022: xserver-1.6.0-primary.patch
|
Patch6022: xserver-1.6.0-primary.patch
|
||||||
Patch6023: xserver-1.6.0-selinux-destroy.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 moduledir %{_libdir}/xorg/modules
|
||||||
%define drimoduledir %{_libdir}/dri
|
%define drimoduledir %{_libdir}/dri
|
||||||
%define sdkdir %{_includedir}/xorg
|
%define sdkdir %{_includedir}/xorg
|
||||||
@ -521,6 +528,14 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Mar 25 2009 Peter Hutterer <peter.hutterer@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@redhat.com> 1.6.0-14
|
* Wed Mar 18 2009 Adam Jackson <ajax@redhat.com> 1.6.0-14
|
||||||
- s390 fixes (Karsten Hopp)
|
- s390 fixes (Karsten Hopp)
|
||||||
|
|
||||||
|
46
xserver-1.6.0-xinerama-crashes.patch
Normal file
46
xserver-1.6.0-xinerama-crashes.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
From 24e682d0fcc98d7c3f63fa484cc28285df48b499 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@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@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
|
||||||
|
|
37
xserver-1.6.0-xinerama-cursors.patch
Normal file
37
xserver-1.6.0-xinerama-cursors.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From 3323f7ac880d5a8261d5b22059374fc9de8ca683 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@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@viatech.com.cn>
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@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
|
||||||
|
|
73
xserver-1.6.0-xtest-pointerscreen.patch
Normal file
73
xserver-1.6.0-xtest-pointerscreen.patch
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
From c3e5af42be915b27056644c2df6a4ce30b4ab5f3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@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@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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user