From 02df4d6fb4dad5b82165fb603cc403256574cbf8 Mon Sep 17 00:00:00 2001 From: Jan Kiszka Date: Tue, 31 Jan 2012 13:45:31 +0100 Subject: 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 --- ui/sdl.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'ui/sdl.c') diff --git a/ui/sdl.c b/ui/sdl.c index 73e58395eb..6f8091c725 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(); -- cgit v1.2.1