Skip to content

Commit

Permalink
Fixed regression causing the renderer to recreate its window since it…
Browse files Browse the repository at this point in the history
…'s not getting an OpenGL 2.1 context anymore.
  • Loading branch information
slouken committed Mar 11, 2014
1 parent e8eb142 commit 2839810
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
6 changes: 3 additions & 3 deletions src/video/SDL_video.c
Expand Up @@ -2563,10 +2563,10 @@ SDL_GL_ResetAttributes()
_this->gl_config.multisamplesamples = 0;
_this->gl_config.retained_backing = 1;
_this->gl_config.accelerated = -1; /* accelerated or not, both are fine */
#if SDL_VIDEO_OPENGL
_this->gl_config.major_version = 1;
_this->gl_config.minor_version = 2;
_this->gl_config.profile_mask = 0;
#if SDL_VIDEO_OPENGL
_this->gl_config.major_version = 2;
_this->gl_config.minor_version = 1;
#elif SDL_VIDEO_OPENGL_ES2
_this->gl_config.major_version = 2;
_this->gl_config.minor_version = 0;
Expand Down
21 changes: 18 additions & 3 deletions src/video/cocoa/SDL_cocoaopengl.m
Expand Up @@ -162,7 +162,9 @@ - (void)setWindow:(SDL_Window *)newWindow
Cocoa_GL_CreateContext(_THIS, SDL_Window * window)
{
SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
/*
const GLubyte *(APIENTRY * glGetStringFunc)(GLenum) = NULL;
*/
NSAutoreleasePool *pool;
SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window);
SDL_DisplayData *displaydata = (SDL_DisplayData *)display->driverdata;
Expand Down Expand Up @@ -249,7 +251,7 @@ - (void)setWindow:(SDL_Window *)newWindow

fmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attr];
if (fmt == nil) {
SDL_SetError ("Failed creating OpenGL pixel format");
SDL_SetError("Failed creating OpenGL pixel format");
[pool release];
return NULL;
}
Expand All @@ -263,7 +265,7 @@ - (void)setWindow:(SDL_Window *)newWindow
[fmt release];

if (context == nil) {
SDL_SetError ("Failed creating OpenGL context");
SDL_SetError("Failed creating OpenGL context");
[pool release];
return NULL;
}
Expand All @@ -272,10 +274,22 @@ - (void)setWindow:(SDL_Window *)newWindow

if ( Cocoa_GL_MakeCurrent(_this, window, context) < 0 ) {
Cocoa_GL_DeleteContext(_this, context);
SDL_SetError ("Failed making OpenGL context current");
SDL_SetError("Failed making OpenGL context current");
return NULL;
}

/* No other backend does this version checking.
If we enable it, we should consider whether it should be done at a
higher level for all platforms. We'll have to think through the implications
of this.
For example, Mac OS X 10.6 will only report OpenGL 2.0, but we ask for 2.1
by default. If we don't get 2.1, then the renderer will set the requested
version and try to recreate the window, which causes all kinds of problems.
For now, we'll just disable this code until we can think about it more.
*/
#if 0
glGetStringFunc = (const GLubyte *(APIENTRY *)(GLenum)) SDL_GL_GetProcAddress("glGetString");
if (!glGetStringFunc) {
Cocoa_GL_DeleteContext(_this, context);
Expand Down Expand Up @@ -305,6 +319,7 @@ - (void)setWindow:(SDL_Window *)newWindow

_this->gl_config.major_version = glversion_major;
_this->gl_config.minor_version = glversion_minor;
#endif

return context;
}
Expand Down

0 comments on commit 2839810

Please sign in to comment.