mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-18 02:38:27 +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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue