]> xenbits.xensource.com Git - qemu-xen-4.4-testing.git/commitdiff
sdl: Limit sdl_grab_end in handle_activation to Windows hosts
authorJan Kiszka <jan.kiszka@siemens.com>
Tue, 31 Jan 2012 12:45:31 +0000 (13:45 +0100)
committerAnthony Liguori <aliguori@us.ibm.com>
Wed, 1 Feb 2012 20:45:02 +0000 (14:45 -0600)
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 <erik.rull@rdsoftware.de>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
ui/sdl.c

index 73e58395eb88b15c1b898559377261c58aafc5c8..6f8091c72567bfe7343beffe8b2df6d37920886a 100644 (file)
--- 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();