diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2009-03-25 12:55:42 +1000 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2009-06-29 14:21:32 -0700 |
commit | e97cabce4abdaf6b83d1a442f7972d4c45979b33 (patch) | |
tree | 8f4a6d731c0a7d4ddba81fa1009a69792760bcb9 | |
parent | 17c5b2caf01deec1d1be9fc2ac68a3d636e64c44 (diff) |
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.
Backported from commit 66089e9129a821cfb1983d3d35f41b975a52de5e for
server-1.6-branch by Peter Hutterer
Reported-by: Gordon Yuan <GordonYuan@viatech.com.cn>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | 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 2b73b1698..896ed3700 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; |