Two cursor using Xinerama on XServer 1.5.99.3
GordonYuan at viatech.com.cn
GordonYuan at viatech.com.cn
Thu Mar 26 00:53:18 PDT 2009
Peter,
I have tried it, but it becomes worse. There are some cursors on the edge of the screen when I move the pointer.
I'm afraid that the changes are still not correct.
Thanks!
Best wishes,
Gordon
-----Original Message-----
From: Peter Hutterer [mailto:peter.hutterer at who-t.net]
Sent: 2009年3月25日 11:29
To: Gordon Yuan
Cc: xorg at lists.freedesktop.org
Subject: Re: Two cursor using Xinerama on XServer 1.5.99.3
On Fri, Mar 13, 2009 at 03:09:06PM +0800, GordonYuan at viatech.com.cn 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 <peter.hutterer at who-t.net>
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 <GordonYuan at viatech.com.cn>
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
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
More information about the xorg
mailing list