ca7f815
From 3323f7ac880d5a8261d5b22059374fc9de8ca683 Mon Sep 17 00:00:00 2001
ca7f815
From: Peter Hutterer <peter.hutterer@who-t.net>
ca7f815
Date: Wed, 25 Mar 2009 12:55:42 +1000
ca7f815
Subject: [PATCH] xfree86: fix SWCursor check in xf86CursorSetCursor.
ca7f815
ca7f815
Wrong check for inputInfo.pointer resulted in a SW cursor being rendered when
ca7f815
the pointer left the screen (in a Xinerama setup).
ca7f815
We must call the sprite rendering function if
ca7f815
- SW cursors are enabled, or
ca7f815
- The current device is not the VCP and not attached to the VCP.
ca7f815
ca7f815
Reported-by: Gordon Yuan <GordonYuan@viatech.com.cn>
ca7f815
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
ca7f815
---
ca7f815
 hw/xfree86/ramdac/xf86Cursor.c |    6 +++---
ca7f815
 1 files changed, 3 insertions(+), 3 deletions(-)
ca7f815
ca7f815
diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c
ca7f815
index 2b73b16..896ed37 100644
ca7f815
--- a/hw/xfree86/ramdac/xf86Cursor.c
ca7f815
+++ b/hw/xfree86/ramdac/xf86Cursor.c
ca7f815
@@ -302,9 +302,9 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
ca7f815
 
ca7f815
 
ca7f815
     if (pCurs == NullCursor) {	/* means we're supposed to remove the cursor */
ca7f815
-        if (ScreenPriv->SWCursor || pDev != inputInfo.pointer)
ca7f815
-            (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor,
ca7f815
-                                                  x, y);
ca7f815
+        if (ScreenPriv->SWCursor ||
ca7f815
+            !(pDev == inputInfo.pointer || !pDev->isMaster && pDev->u.master == inputInfo.pointer))
ca7f815
+                (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor, x, y);
ca7f815
         else if (ScreenPriv->isUp) {
ca7f815
             xf86SetCursor(pScreen, NullCursor, x, y);
ca7f815
             ScreenPriv->isUp = FALSE;
ca7f815
-- 
ca7f815
1.6.0.6
ca7f815