From 8d73f92a37b44fe3657c2db82873f9e36a2c9f96 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 12 Feb 2011 17:51:47 -0800 Subject: [PATCH] Fixed bug #1116 Don't allocate the window's texture data until after creating the renderer, in case the renderer recreates the window. --- src/video/SDL_video.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 7f2974381..314c3e6b3 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -214,16 +214,6 @@ SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pix data = SDL_GetWindowData(window, SDL_WINDOWTEXTUREDATA); if (!data) { - data = (SDL_WindowTextureData *)SDL_calloc(1, sizeof(*data)); - if (!data) { - SDL_OutOfMemory(); - return -1; - } - SDL_SetWindowData(window, SDL_WINDOWTEXTUREDATA, data); - } - - renderer = data->renderer; - if (!renderer) { SDL_RendererInfo info; int i; const char *hint = SDL_GetHint(SDL_HINT_FRAMEBUFFER_ACCELERATION); @@ -254,6 +244,16 @@ SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pix if (!renderer) { return -1; } + + /* Create the data after we successfully create the renderer (bug #1116) */ + data = (SDL_WindowTextureData *)SDL_calloc(1, sizeof(*data)); + if (!data) { + SDL_DestroyRenderer(renderer); + SDL_OutOfMemory(); + return -1; + } + SDL_SetWindowData(window, SDL_WINDOWTEXTUREDATA, data); + data->renderer = renderer; }