Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Move the fix for Bugzilla #1395 into WIN_GL_SetupWindow() directly.

It's a cleaner solution.
  • Loading branch information
icculus committed Aug 1, 2013
1 parent 1dcdf66 commit 6a9726e5b7ca6d599d7b28c1164d659e69e7c894
Showing with 14 additions and 7 deletions.
  1. +14 −2 src/video/windows/SDL_windowsopengl.c
  2. +0 −5 src/video/windows/SDL_windowswindow.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)
{
@@ -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;

0 comments on commit 6a9726e

Please sign in to comment.