dix: drop x/y back into last.valuators before updating the history (#19285)
positionSprite needs to scale to screen coordinates and in the process of doing so alters dev->last.valuators[0:1]. Drop the real coordinates back after finishing and before updating the motion history. This way, we don't push the screen coordinates into the motion history. X.Org Bug 19285 <http://bugs.freedesktop.org/show_bug.cgi?id=19285>
This commit is contained in:
		
							parent
							
								
									67710ad1d1
								
							
						
					
					
						commit
						56efbc0986
					
				| 
						 | 
				
			
			@ -720,6 +720,9 @@ positionSprite(DeviceIntPtr dev, int *x, int *y,
 | 
			
		|||
                                 dev->valuator->axes + 1, scr->height);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* dropy x/y (device coordinates) back into valuators for next event */
 | 
			
		||||
    dev->last.valuators[0] = *x;
 | 
			
		||||
    dev->last.valuators[1] = *y;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			@ -1006,9 +1009,6 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
 | 
			
		|||
    positionSprite(pDev, &x, &y, scr, &cx, &cy);
 | 
			
		||||
    updateHistory(pDev, first_valuator, num_valuators, ms);
 | 
			
		||||
 | 
			
		||||
    /* dropy x/y (device coordinates) back into valuators for next event */
 | 
			
		||||
    pDev->last.valuators[0] = x;
 | 
			
		||||
    pDev->last.valuators[1] = y;
 | 
			
		||||
 | 
			
		||||
    /* Update the valuators with the true value sent to the client*/
 | 
			
		||||
    if (num_valuators >= 1 && first_valuator == 0)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue