On Fri, Mar 13, 2009 at 03:09:06PM +0800, [email protected] wrote:
>     I tried as you said. There is only ONE cursor on the screen, but it's a
>     software cursor, not hardware. The codes about hardware cursor are not
>     called at all.  In fact, only one hardware cursor is what I want. Please
>     give me some advice.  By the way, is there something about my driver or
>     xorg code? 

This fixes it on my box, please give it a test.

>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

_______________________________________________
xorg mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/xorg

Reply via email to