mirror of
				https://github.com/Ryujinx/SDL.git
				synced 2025-11-04 15:34:58 +00:00 
			
		
		
		
	# User Darren Salt <devspam@moreofthesa.me.uk>
# Date 1379621782 -3600 # Thu Sep 19 21:16:22 2013 +0100 Work around a false-positive in the X11 mouse wheel code This false positive occurs when one particular button on my mouse is pressed. The kernel which I'm using is patched to cause a release event to be synthesised immediately when the mouse says that this button is pressed because the mouse doesn't signal release until the button is next pressed. (Also documents a false negative, observed with the horizontal scroll wheel on the same mouse.)
This commit is contained in:
		
							parent
							
								
									c95761e00a
								
							
						
					
					
						commit
						b9567776d7
					
				| 
						 | 
				
			
			@ -135,7 +135,9 @@ static Bool X11_IsWheelCheckIfEvent(Display *display, XEvent *chkev,
 | 
			
		|||
    XPointer arg)
 | 
			
		||||
{
 | 
			
		||||
    XEvent *event = (XEvent *) arg;
 | 
			
		||||
    /* we only handle buttons 4 and 5 - false positive avoidance */
 | 
			
		||||
    if (chkev->type == ButtonRelease &&
 | 
			
		||||
        (event->xbutton.button == Button4 || event->xbutton.button == Button5) &&
 | 
			
		||||
        chkev->xbutton.button == event->xbutton.button &&
 | 
			
		||||
        chkev->xbutton.time == event->xbutton.time)
 | 
			
		||||
        return True;
 | 
			
		||||
| 
						 | 
				
			
			@ -150,7 +152,12 @@ static SDL_bool X11_IsWheelEvent(Display * display,XEvent * event,int * ticks)
 | 
			
		|||
           however, mouse wheel events trigger a button press and a button release
 | 
			
		||||
           immediately. thus, checking if the same button was released at the same
 | 
			
		||||
           time as it was pressed, should be an adequate hack to derive a mouse
 | 
			
		||||
           wheel event. */
 | 
			
		||||
           wheel event.
 | 
			
		||||
           However, there is broken and unusual hardware out there...
 | 
			
		||||
           - False positive: a button for which a release event is
 | 
			
		||||
             generated (or synthesised) immediately.
 | 
			
		||||
           - False negative: a wheel which, when rolled, doesn't have
 | 
			
		||||
             a release event generated immediately. */
 | 
			
		||||
        if (XCheckIfEvent(display, &relevent, X11_IsWheelCheckIfEvent,
 | 
			
		||||
            (XPointer) event)) {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue