Fixed window flashing under X11 when creating a window and OpenGL renderer

This commit is contained in:
Sam Lantinga 2024-04-25 16:42:18 -07:00
parent 26b71d14e9
commit 04f1901751

View file

@ -828,6 +828,18 @@ static int SDLCALL SDL_RendererEventWatch(void *userdata, SDL_Event *event)
int SDL_CreateWindowAndRenderer(int width, int height, SDL_WindowFlags window_flags, SDL_Window **window, SDL_Renderer **renderer)
{
SDL_bool hidden = (window_flags & SDL_WINDOW_HIDDEN) != 0;
if (!window) {
return SDL_InvalidParamError("window");
}
if (!renderer) {
return SDL_InvalidParamError("renderer");
}
// Hide the window so if the renderer recreates it, we don't get a visual flash on screen
window_flags |= SDL_WINDOW_HIDDEN;
*window = SDL_CreateWindow(NULL, width, height, window_flags);
if (!*window) {
*renderer = NULL;
@ -836,9 +848,14 @@ int SDL_CreateWindowAndRenderer(int width, int height, SDL_WindowFlags window_fl
*renderer = SDL_CreateRenderer(*window, NULL, 0);
if (!*renderer) {
SDL_DestroyWindow(*window);
return -1;
}
if (!hidden) {
SDL_ShowWindow(*window);
}
return 0;
}