--- a/open-src/xserver/xorg/patch-list Fri Jun 26 13:58:56 2009 -0700
+++ b/open-src/xserver/xorg/patch-list Fri Jun 26 15:04:57 2009 -0700
@@ -1,4 +1,5 @@
upstream-1.6.2.patch,-p1
+xinerama-cursors.patch,-p1
xkb-defaults.patch,-p1
xkb-defaults-compat.patch
constify-atom-strings.patch,-p1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/xinerama-cursors.patch Fri Jun 26 15:04:57 2009 -0700
@@ -0,0 +1,37 @@
+From 3323f7ac880d5a8261d5b22059374fc9de8ca683 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <[email protected]>
+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 <[email protected]>
+Signed-off-by: Peter Hutterer <[email protected]>
+---
+ 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
+