ioemu: pump SDL events on resize
PATCH 1/1 ioemu: pump SDL events on resize
ioemu: pump SDL events on resize
When sdl_resize resizes the SDL window, some window manager send back a ConfigureNotify event, which triggers a SDL_VIDEORESIZE event. That event, however, is seen only much later, on the next VGA refresh round. If the guest quickly switches to another resolution in between, the SDL_VIDEORESIZE event makes us erroneously rescale that new resolution into the old one.
This patch makes us pump that window manager event, so that no SDL_VIDEORESIZE event is generated.
tools/ioemu/sdl.c +3 -0
@@ -294,6 +294,9 @@ static void sdl_resize(DisplayState *ds, };#endif } + +/* Process any WM-generated resize event */ +SDL_PumpEvents (); }static void sdl_colourdepth (DisplayState *ds,int depth)
Quoted 9 lines · Samuel Thibault, le Fri 02 May 2008 11:21:33 +0100, a écrit :
ioemu: pump SDL events on resize
When
sdl_resizeresizes the SDL window, some window manager send back a ConfigureNotify event, which triggers aSDL_VIDEORESIZEevent. That event, however, is seen only much later, on the next VGA refresh round. If the guest quickly switches to another resolution in between, theSDL_VIDEORESIZEevent makes us erroneously rescale that new resolution into the old one.
Quoted 4 lines
This patch makes us pump that window manager event, so that no
SDL_VIDEORESIZEevent is generated.Signed-off-by Samuel Thibault <[email protected]>
Oops, I sent an old patch, here is a proper one:
tools/ioemu/sdl.c +3 -0
@@ -235,6 +235,9 @@ static void sdl_resize(DisplayState *ds, again: screen =SDL_SetVideoMode (w, h,0 , flags); + +/* Process any WM-generated resize event */ +SDL_PumpEvents ();if (!screen) {fprintf (stderr,"Could not open SDL display: %s\n" ,SDL_GetError ());