From: Jan Kiszka Date: Tue, 31 Jan 2012 12:45:31 +0000 (+0100) Subject: sdl: Limit sdl_grab_end in handle_activation to Windows hosts X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=02df4d6fb4dad5b82165fb603cc403256574cbf8;p=qemu-xen-4.4-testing.git sdl: Limit sdl_grab_end in handle_activation to Windows hosts There are scenarios on Linux with some SDL versions where handle_activation is continuous invoked with state = SDL_APPINPUTFOCUS and gain = 0 while we grabbed the input. This causes a ping-pong when we grab the input after an absolute mouse entered the window. As this sdl_grab_end was once introduced to work around a Windows-only issue (0294ffb9c8), limit it to that platform. CC: Erik Rull Signed-off-by: Jan Kiszka Signed-off-by: Anthony Liguori --- diff --git a/ui/sdl.c b/ui/sdl.c index 73e58395e..6f8091c72 100644 --- a/ui/sdl.c +++ b/ui/sdl.c @@ -828,10 +828,14 @@ static void handle_mousebutton(DisplayState *ds, SDL_Event *ev) static void handle_activation(DisplayState *ds, SDL_Event *ev) { +#ifdef _WIN32 + /* Disable grab if the window no longer has the focus + * (Windows-only workaround) */ if (gui_grab && ev->active.state == SDL_APPINPUTFOCUS && !ev->active.gain && !gui_fullscreen) { sdl_grab_end(); } +#endif if (!gui_grab && ev->active.gain && is_graphic_console() && (kbd_mouse_is_absolute() || absolute_enabled)) { absolute_mouse_grab();