Message ID | 54777ea5bba70b1206c783763c49437dd0101d25.1328013930.git.jan.kiszka@siemens.com |
---|---|
State | New |
Headers | show |
Jan Kiszka wrote: > 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> > --- > ui/sdl.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/ui/sdl.c b/ui/sdl.c > index 73e5839..6f8091c 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(); Hi Jan, thanks for your help. When will the patches be applied to the qemu-git? Best regards, Erik
diff --git a/ui/sdl.c b/ui/sdl.c index 73e5839..6f8091c 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();
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> --- ui/sdl.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)