sdl nograb
PATCH 1/1 sdl nograb
Add a -nograb command line option to prevent sdl from grabbing mouse and keyboard.
Signed-off-by Stefano Stabellini <[email protected]>
sdl.c +8 -5
@@ -451,7 +451,7 @@ gui_key_modifier_pressed =0 ;if (gui_keysym ==0 ) {/* exit/enter grab if pressing Ctrl-Alt */ -if (!gui_grab) { +if (!gui_grab && !grab_disabled) {/* if the application is not active, do not try to enter grab state. It prevents
@@ -481,7 +481,7 @@break ;case SDL_MOUSEMOTION :if (gui_grab ||kbd_mouse_is_absolute () || - absolute_enabled) { + absolute_enabled || grab_disabled) {sdl_send_mouse_event (ev->motion.xrel, ev->motion.yrel,0 , ev->motion.x, ev->motion.y, ev->motion.state); }
@@ -490,7 +490,7 @@case SDL_MOUSEBUTTONUP : {SDL_MouseButtonEvent *bev = &ev->button; -if (!gui_grab && !kbd_mouse_is_absolute ()) { +if (!gui_grab && !kbd_mouse_is_absolute () && !grab_disabled) {if (ev->type ==SDL_MOUSEBUTTONDOWN && (bev->button ==SDL_BUTTON_LEFT )) {/* start grabbing all events */
@@ -655,7 +655,10 @@atexit (sdl_cleanup);if (full_screen) { gui_fullscreen =1 ; - gui_fullscreen_initial_grab =1 ; -sdl_grab_start (); +if (!grab_disabled) + { + gui_fullscreen_initial_grab =1 ; +sdl_grab_start (); + } } }
sysemu.h +1 -0
@@ -90,6 +90,7 @@extern const char *keyboard_layout;extern int win2k_install_hack;extern int alt_grab; +extern int grab_disabled;extern int usb_enabled;extern int smp_cpus;extern int cursor_hide;
vl.c +7 -0
@@ -227,6 +227,7 @@#endif const char *qemu_name;int alt_grab =0 ; +int grab_disabled =0 ;#ifdef TARGET_SPARC unsigned int nb_prom_envs =0 ;const char *prom_envs[MAX_PROM_ENVS ];
@@ -4685,6 +4686,7 @@"-no-frame open SDL window without a frame and window decorations\n" "-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)\n" "-no-quit disable SDL window close capability\n" + "-nograb never grab mouse and keyboard\n"#endif #ifdef TARGET_I386 "-no-fd-bootchk disable boot signature checking for floppy disks\n"
@@ -4883,6 +4885,7 @@ QEMU_OPTION_full_screen, QEMU_OPTION_no_frame, QEMU_OPTION_alt_grab, + QEMU_OPTION_nograb, QEMU_OPTION_no_quit, QEMU_OPTION_pidfile, QEMU_OPTION_no_kqemu,
@@ -4988,6 +4991,7 @@ { "no-frame", 0, QEMU_OPTION_no_frame }, { "alt-grab", 0, QEMU_OPTION_alt_grab }, { "no-quit", 0, QEMU_OPTION_no_quit }, + { "nograb", 0, QEMU_OPTION_nograb }, #endif { "pidfile", HAS_ARG, QEMU_OPTION_pidfile }, { "win2k-hack", 0, QEMU_OPTION_win2k_hack },
@@ -5776,6 +5780,9 @@break ;case QEMU_OPTION_no_quit: no_quit =1 ; +break ; +case QEMU_OPTION_nograb: + grab_disabled =1 ;break ;#endif case QEMU_OPTION_pidfile:
Quoted 37 lines · Stefano Stabellini
Add a -nograb command line option to prevent sdl from grabbing mouse and keyboard.
Signed-off-by Stefano Stabellini <[email protected]>diff -r
5c78dd111aaesdl.csdl.c +3
-3@@ -451,7 +451,7 @@ gui_key_modifier_pressed =0 ;if (gui_keysym ==0 ) {/* exit/enter grab if pressing Ctrl-Alt */ -if (!gui_grab) { +if (!gui_grab && !grab_disabled) {/* if the application is not active, do not try to enter grab state. It prevents @@ -481,7 +481,7 @@break ;case SDL_MOUSEMOTION :if (gui_grab ||kbd_mouse_is_absolute () || - absolute_enabled) { + absolute_enabled || grab_disabled) {sdl_send_mouse_event (ev->motion.xrel, ev->motion.yrel,0 , ev->motion.x, ev->motion.y, ev->motion.state); }@@ -490,7 +490,7 @@case SDL_MOUSEBUTTONUP : {SDL_MouseButtonEvent *bev = &ev->button; -if (!gui_grab && !kbd_mouse_is_absolute ()) { +if (!gui_grab && !kbd_mouse_is_absolute () && !grab_disabled) {if (ev->type ==SDL_MOUSEBUTTONDOWN && (bev->button ==SDL_BUTTON_LEFT )) {/* start grabbing all events */ @@ -655,7 +655,10 @@atexit (sdl_cleanup);
sdl.c line 663
Quoted 10 lines
sdl.c +5
-2if (full_screen) { gui_fullscreen =1 ; - gui_fullscreen_initial_grab =1 ; -sdl_grab_start (); +if (!grab_disabled) + { + gui_fullscreen_initial_grab =1 ; +sdl_grab_start (); + }
Code formatting is off here (should be if () {).
In principle, I think this patch is good. I wonder if we should introduce some sort of way to pass sdl options and fold -no-quit and -no-grab into the same command. Like -sdlopts no-quit,no-grab.
Regards,
Anthony Liguori