From 3f3ee25cd8bba634ef3a96080fe420746d71088d Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 23 Jul 2006 00:19:12 +0000 Subject: [PATCH] Fixed crash with multiple windows --- src/video/SDL_renderer_gl.c | 3 +-- src/video/SDL_sysvideo.h | 2 +- src/video/SDL_video.c | 6 +++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/video/SDL_renderer_gl.c b/src/video/SDL_renderer_gl.c index 88e645982..c2122c517 100644 --- a/src/video/SDL_renderer_gl.c +++ b/src/video/SDL_renderer_gl.c @@ -199,8 +199,7 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags) GL_RenderData *data; if (!(window->flags & SDL_WINDOW_OPENGL)) { - window->flags |= SDL_WINDOW_OPENGL; - if (SDL_RecreateWindow(window) < 0) { + if (SDL_RecreateWindow(window, window->flags | SDL_WINDOW_OPENGL) < 0) { return NULL; } } diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 6e442c6d8..7a624ec07 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -397,7 +397,7 @@ extern SDL_bool SDL_AddDisplayMode(int displayIndex, extern void SDL_AddRenderDriver(int displayIndex, const SDL_RenderDriver * driver); -extern int SDL_RecreateWindow(SDL_Window * window); +extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags); extern SDL_Window *SDL_GetWindowFromID(SDL_WindowID windowID); extern SDL_VideoDisplay *SDL_GetDisplayFromWindow(SDL_Window * window); diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index e4645b6a2..f9f0bfeaa 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -843,16 +843,16 @@ SDL_CreateWindowFrom(const void *data) } int -SDL_RecreateWindow(SDL_Window * window) +SDL_RecreateWindow(SDL_Window * window, Uint32 flags) { - if ((window->flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) { - window->flags &= ~SDL_WINDOW_OPENGL; + if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) { SDL_SetError("No OpenGL support in video driver"); return -1; } if (_this->DestroyWindow) { _this->DestroyWindow(_this, window); } + window->flags = flags; return _this->CreateWindow(_this, window); }