Fixed bug #101
authorSam Lantinga <slouken@libsdl.org>
Thu, 27 Apr 2006 10:44:43 +0000
changeset 1740 db7e15a99cb3
parent 1739 3a3e847aadb9
child 1741 d67622addf51
Fixed bug #101 If we lose focus at all, unlock the mouse.
src/video/x11/SDL_x11events.c
src/video/x11/SDL_x11mouse.c
--- a/src/video/x11/SDL_x11events.c	Thu Apr 27 10:21:54 2006 +0000
+++ b/src/video/x11/SDL_x11events.c	Thu Apr 27 10:44:43 2006 +0000
@@ -666,7 +666,7 @@
 			} else {
 				switch_time = now + 200;
 			}
-		} else if ( now >= switch_time ) {
+		} else if ( (int)(switch_time-now) <= 0 ) {
 			Uint32 go_fullscreen;
 
 			go_fullscreen = switch_waiting & SDL_FULLSCREEN;
--- a/src/video/x11/SDL_x11mouse.c	Thu Apr 27 10:21:54 2006 +0000
+++ b/src/video/x11/SDL_x11mouse.c	Thu Apr 27 10:44:43 2006 +0000
@@ -226,6 +226,7 @@
 /* Check to see if we need to enter or leave mouse relative mode */
 void X11_CheckMouseModeNoLock(_THIS)
 {
+	const Uint8 full_focus = (SDL_APPACTIVE|SDL_APPINPUTFOCUS|SDL_APPMOUSEFOCUS);
 	char *env_override;
 	int enable_relative = 1;
 
@@ -242,7 +243,7 @@
 	if ( enable_relative &&
 	     !(SDL_cursorstate & CURSOR_VISIBLE) &&
 	     (this->input_grab != SDL_GRAB_OFF) &&
-             (SDL_GetAppState() & SDL_APPACTIVE) ) {
+             (SDL_GetAppState() & full_focus) == full_focus ) {
 		if ( ! mouse_relative ) {
 			X11_EnableDGAMouse(this);
 			if ( ! (using_dga & DGA_MOUSE) ) {