From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:39823) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RquUY-0007mC-NG for qemu-devel@nongnu.org; Fri, 27 Jan 2012 17:41:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RquUX-0002MK-Dk for qemu-devel@nongnu.org; Fri, 27 Jan 2012 17:41:58 -0500 Message-ID: <4F232832.8060907@web.de> Date: Fri, 27 Jan 2012 23:41:54 +0100 From: Jan Kiszka MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH] sdl: Do not grab mouse on mode switch while in background List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel , qemu-trivial Cc: Erik Rull From: Jan Kiszka When the mouse mode changes to absolute while the SDL windows is not in focus, refrain from grabbing the input. It would steal from some other window. Signed-off-by: Jan Kiszka --- I bet this makes no difference for your problem, Erik, but I came across this while trying to reproduce the issue. ui/sdl.c | 30 ++++++++++++++++-------------- 1 files changed, 16 insertions(+), 14 deletions(-) diff --git a/ui/sdl.c b/ui/sdl.c index 8cafc44..384276d 100644 --- a/ui/sdl.c +++ b/ui/sdl.c @@ -483,12 +483,27 @@ static void sdl_grab_end(void) sdl_update_caption(); } +static void absolute_mouse_grab(void) +{ + int mouse_x, mouse_y; + + if (SDL_GetAppState() & SDL_APPINPUTFOCUS) { + SDL_GetMouseState(&mouse_x, &mouse_y); + if (mouse_x > 0 && mouse_x < real_screen->w - 1 && + mouse_y > 0 && mouse_y < real_screen->h - 1) { + sdl_grab_start(); + } + } +} + static void sdl_mouse_mode_change(Notifier *notify, void *data) { if (kbd_mouse_is_absolute()) { if (!absolute_enabled) { - sdl_grab_start(); absolute_enabled = 1; + if (is_graphic_console()) { + absolute_mouse_grab(); + } } } else if (absolute_enabled) { if (!gui_fullscreen) { @@ -571,19 +586,6 @@ static void toggle_full_screen(DisplayState *ds) vga_hw_update(); } -static void absolute_mouse_grab(void) -{ - int mouse_x, mouse_y; - - if (SDL_GetAppState() & SDL_APPINPUTFOCUS) { - SDL_GetMouseState(&mouse_x, &mouse_y); - if (mouse_x > 0 && mouse_x < real_screen->w - 1 && - mouse_y > 0 && mouse_y < real_screen->h - 1) { - sdl_grab_start(); - } - } -} - static void handle_keydown(DisplayState *ds, SDL_Event *ev) { int mod_state; -- 1.7.3.4