SDL window resize and flicker

Hi,

I have a resizable SDL window, and when it’s resized, the surface goes
black and is flushed to screen before I have a chance to redraw
it. This causes flicker.

The super-small attached patch fixes this issue by avoiding a
SDL_Flip() right after the window resize. What do you think?

This SDL_ClearSurface function is only called once in the code, in
SDL_SetVideoMode, and as far as I can tell the patch doesn’t introduce
other changes than getting rid of the flicker.

Cheers,–
Sylvain
PS: I see this was first reported here as well:
http://lists.libsdl.org/pipermail/sdl-libsdl.org/2004-February/041562.html
-------------- next part --------------
— src/video/SDL_video.c~ 2007-12-31 05:48:14.000000000 +0100
+++ src/video/SDL_video.c 2008-02-28 22:42:40.000000000 +0100
@@ -503,7 +503,6 @@
SDL_Flip(surface);
SDL_FillRect(surface, NULL, black);
}

  • SDL_Flip(surface);
    }

/*

This SDL_ClearSurface function is only called once in the code, in
SDL_SetVideoMode, and as far as I can tell the patch doesn’t introduce
other changes than getting rid of the flicker.

Seems a good patch, I thought it was more difficult that this to get rid of
that annoying flicker while resizing windows :)–
Bye,
Gabry

The super-small attached patch fixes this issue by avoiding a
SDL_Flip() right after the window resize. What do you think?

That was originally added to clear the screen when setting a fullscreen video
mode, so I just wrapped the flip in a check to see if we’re in fullscreen mode.

Thanks!
-Sam Lantinga, Lead Software Engineer, Blizzard Entertainment