Two cursor using Xinerama on XServer 1.5.99.3

Pierre-Loup A. Griffais pgriffais at nvidia.com
Thu May 7 09:07:14 PDT 2009


GordonYuan at viatech.com.cn wrote:
> 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.
>   

Peter,

I had the same problem on my two machines. I haven't exactly tried your
fix, but the change I used to fix it locally looks identical (bar the
indentation); I think the change looks good.

Gordon, I didn't see anything that looked like what you described. Did
you make sure HW cursors were enabled before trying out the fix?

Thanks,
- Pierre-Loup

> >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;
>   


-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------



More information about the xorg mailing list