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
