From 6a9726e5b7ca6d599d7b28c1164d659e69e7c894 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 1 Aug 2013 00:27:22 -0400 Subject: [PATCH] Move the fix for Bugzilla #1395 into WIN_GL_SetupWindow() directly. It's a cleaner solution. --- src/video/windows/SDL_windowsopengl.c | 16 ++++++++++++++-- src/video/windows/SDL_windowswindow.c | 5 ----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/video/windows/SDL_windowsopengl.c b/src/video/windows/SDL_windowsopengl.c index f33f5c358..9cda41596 100644 --- a/src/video/windows/SDL_windowsopengl.c +++ b/src/video/windows/SDL_windowsopengl.c @@ -418,8 +418,9 @@ WIN_GL_ChoosePixelFormatARB(_THIS, int *iAttribs, float *fAttribs) return pixel_format; } -int -WIN_GL_SetupWindow(_THIS, SDL_Window * window) +/* actual work of WIN_GL_SetupWindow() happens here. */ +static int +WIN_GL_SetupWindowInternal(_THIS, SDL_Window * window) { HDC hdc = ((SDL_WindowData *) window->driverdata)->hdc; PIXELFORMATDESCRIPTOR pfd; @@ -529,6 +530,17 @@ WIN_GL_SetupWindow(_THIS, SDL_Window * window) return 0; } +int +WIN_GL_SetupWindow(_THIS, SDL_Window * window) +{ + /* The current context is lost in here; save it and reset it. */ + SDL_Window *current_win = SDL_GL_GetCurrentWindow(); + SDL_GLContext current_ctx = SDL_GL_GetCurrentContext(); + const int retval = WIN_GL_SetupWindowInternal(_this, window); + WIN_GL_MakeCurrent(_this, current_win, current_ctx); + return retval; +} + SDL_GLContext WIN_GL_CreateContext(_THIS, SDL_Window * window) { diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index c1ef463e6..f40323ea6 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -231,15 +231,10 @@ WIN_CreateWindow(_THIS, SDL_Window * window) } #if SDL_VIDEO_OPENGL_WGL if (window->flags & SDL_WINDOW_OPENGL) { - /* The current context is lost in SDL_GL_SetupWindow; recover it. */ - SDL_Window *current_win = SDL_GL_GetCurrentWindow(); - SDL_GLContext current_ctx = SDL_GL_GetCurrentContext(); if (WIN_GL_SetupWindow(_this, window) < 0) { WIN_DestroyWindow(_this, window); - WIN_GL_MakeCurrent(_this, current_win, current_ctx); return -1; } - WIN_GL_MakeCurrent(_this, current_win, current_ctx); } #endif return 0;