|
@@ -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;
|
|
|
}
|
|
|
|