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@viatech.com.cn> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
		
							parent
							
								
									afa680e495
								
							
						
					
					
						commit
						66089e9129
					
				| 
						 | 
					@ -302,9 +302,10 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pCurs == NullCursor) {	/* means we're supposed to remove the cursor */
 | 
					    if (pCurs == NullCursor) {	/* means we're supposed to remove the cursor */
 | 
				
			||||||
        if (ScreenPriv->SWCursor || pDev != inputInfo.pointer)
 | 
					        if (ScreenPriv->SWCursor ||
 | 
				
			||||||
            (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor,
 | 
					            !(pDev == inputInfo.pointer || !IsMaster(pDev) &&
 | 
				
			||||||
                                                  x, y);
 | 
					                GetMaster(pDev->u.master, MASTER_POINTER) == inputInfo.pointer))
 | 
				
			||||||
 | 
					                (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor, x, y);
 | 
				
			||||||
        else if (ScreenPriv->isUp) {
 | 
					        else if (ScreenPriv->isUp) {
 | 
				
			||||||
            xf86SetCursor(pScreen, NullCursor, x, y);
 | 
					            xf86SetCursor(pScreen, NullCursor, x, y);
 | 
				
			||||||
            ScreenPriv->isUp = FALSE;
 | 
					            ScreenPriv->isUp = FALSE;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue