From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KxQht-0001va-In for qemu-devel@nongnu.org; Tue, 04 Nov 2008 13:32:49 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KxQht-0001vF-6m for qemu-devel@nongnu.org; Tue, 04 Nov 2008 13:32:49 -0500 Received: from [199.232.76.173] (port=50595 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KxQhs-0001vA-QT for qemu-devel@nongnu.org; Tue, 04 Nov 2008 13:32:48 -0500 Received: from smtp.ctxuk.citrix.com ([62.200.22.115]:11943 helo=SMTP.EU.CITRIX.COM) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KxQhr-000536-Rz for qemu-devel@nongnu.org; Tue, 04 Nov 2008 13:32:48 -0500 Message-ID: <49109615.20500@eu.citrix.com> Date: Tue, 04 Nov 2008 18:36:05 +0000 From: Stefano Stabellini MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH 1 of 2] sdl nograb Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Ian Jackson Add a -nograb command line option to prevent sdl from grabbing mouse and keyboard. Signed-off-by: Stefano Stabellini diff -r 5c78dd111aae sdl.c --- a/sdl.c Tue Nov 04 09:04:41 2008 +0000 +++ b/sdl.c Tue Nov 04 18:31:02 2008 +0000 @@ -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(); + } } } diff -r 5c78dd111aae sysemu.h --- a/sysemu.h Tue Nov 04 09:04:41 2008 +0000 +++ b/sysemu.h Tue Nov 04 18:31:02 2008 +0000 @@ -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; diff -r 5c78dd111aae vl.c --- a/vl.c Tue Nov 04 09:04:41 2008 +0000 +++ b/vl.c Tue Nov 04 18:31:02 2008 +0000 @@ -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: