mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-21 12:18:28 +00:00
Fixed window flashing under X11 when creating a window and OpenGL renderer
This commit is contained in:
parent
26b71d14e9
commit
04f1901751
1 changed files with 17 additions and 0 deletions
|
@ -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)
|
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);
|
*window = SDL_CreateWindow(NULL, width, height, window_flags);
|
||||||
if (!*window) {
|
if (!*window) {
|
||||||
*renderer = NULL;
|
*renderer = NULL;
|
||||||
|
@ -836,9 +848,14 @@ int SDL_CreateWindowAndRenderer(int width, int height, SDL_WindowFlags window_fl
|
||||||
|
|
||||||
*renderer = SDL_CreateRenderer(*window, NULL, 0);
|
*renderer = SDL_CreateRenderer(*window, NULL, 0);
|
||||||
if (!*renderer) {
|
if (!*renderer) {
|
||||||
|
SDL_DestroyWindow(*window);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!hidden) {
|
||||||
|
SDL_ShowWindow(*window);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue