avoid stopping QEMU when switching desktops with Ctrl-Alt-x
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Tue, 13 Jun 2006 12:03:53 +0000 (12:03 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Tue, 13 Jun 2006 12:03:53 +0000 (12:03 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1954 c046a42c-6fe2-441c-8c8c-71466251a162

sdl.c

diff --git a/sdl.c b/sdl.c
index d99505e..38d7553 100644 (file)
--- a/sdl.c
+++ b/sdl.c
@@ -447,10 +447,18 @@ static void sdl_refresh(DisplayState *ds)
                         gui_key_modifier_pressed = 0;
                         if (gui_keysym == 0) {
                             /* exit/enter grab if pressing Ctrl-Alt */
-                            if (!gui_grab)
-                                sdl_grab_start();
-                            else
+                            if (!gui_grab) {
+                                /* if the application is not active,
+                                   do not try to enter grab state. It
+                                   prevents
+                                   'SDL_WM_GrabInput(SDL_GRAB_ON)'
+                                   from blocking all the application
+                                   (SDL bug). */
+                                if (SDL_GetAppState() & SDL_APPACTIVE)
+                                    sdl_grab_start();
+                            } else {
                                 sdl_grab_end();
+                            }
                             /* SDL does not send back all the
                                modifiers key, so we must correct it */
                             reset_keys();