Commit c66b0d4cf4ef84325d3f579c0e3ea5254d7b348a
1 parent
8785a8dd
avoid stopping QEMU when switching desktops with Ctrl-Alt-x
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1954 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
11 additions
and
3 deletions
sdl.c
... | ... | @@ -447,10 +447,18 @@ static void sdl_refresh(DisplayState *ds) |
447 | 447 | gui_key_modifier_pressed = 0; |
448 | 448 | if (gui_keysym == 0) { |
449 | 449 | /* exit/enter grab if pressing Ctrl-Alt */ |
450 | - if (!gui_grab) | |
451 | - sdl_grab_start(); | |
452 | - else | |
450 | + if (!gui_grab) { | |
451 | + /* if the application is not active, | |
452 | + do not try to enter grab state. It | |
453 | + prevents | |
454 | + 'SDL_WM_GrabInput(SDL_GRAB_ON)' | |
455 | + from blocking all the application | |
456 | + (SDL bug). */ | |
457 | + if (SDL_GetAppState() & SDL_APPACTIVE) | |
458 | + sdl_grab_start(); | |
459 | + } else { | |
453 | 460 | sdl_grab_end(); |
461 | + } | |
454 | 462 | /* SDL does not send back all the |
455 | 463 | modifiers key, so we must correct it */ |
456 | 464 | reset_keys(); | ... | ... |