From 95aeece375472bd80f948980781eab4656aaccca Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 22 Jun 2015 23:36:06 -0700 Subject: [PATCH] Fixed bug 3030 - SDL_RecreateWindow fails to restore title, icon, etc. Adam M. It loses the title and icon when window recreation fails. For instance, this may happen when trying to create an OpenGL ES window on a system that doesn't support it. But at that point, the title and icon have already been lost. --- src/video/SDL_video.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 22e08cc93..f464f07ad 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -1388,8 +1388,6 @@ SDL_CreateWindowFrom(const void *data) int SDL_RecreateWindow(SDL_Window * window, Uint32 flags) { - char *title = window->title; - SDL_Surface *icon = window->icon; SDL_bool loaded_opengl = SDL_FALSE; if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) { @@ -1429,8 +1427,6 @@ SDL_RecreateWindow(SDL_Window * window, Uint32 flags) } } - window->title = NULL; - window->icon = NULL; window->flags = ((flags & CREATE_FLAGS) | SDL_WINDOW_HIDDEN); window->last_fullscreen_flags = window->flags; window->is_destroying = SDL_FALSE; @@ -1444,17 +1440,17 @@ SDL_RecreateWindow(SDL_Window * window, Uint32 flags) return -1; } } + if (flags & SDL_WINDOW_FOREIGN) { window->flags |= SDL_WINDOW_FOREIGN; } - if (title) { - SDL_SetWindowTitle(window, title); - SDL_free(title); + if (_this->SetWindowTitle && window->title) { + _this->SetWindowTitle(_this, window); } - if (icon) { - SDL_SetWindowIcon(window, icon); - SDL_FreeSurface(icon); + + if (_this->SetWindowIcon && window->icon) { + _this->SetWindowIcon(_this, window, window->icon); } if (window->hit_test) {