summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Szpakowski <slime73@gmail.com>2019-04-10 22:30:58 -0300
committerAlex Szpakowski <slime73@gmail.com>2019-04-10 22:30:58 -0300
commit095f31cd317eb3c431d931e05c173838088536af (patch)
tree78542b35b5ec3513e2f2a95fae0523b6ce8f3798
parent906a13383118100423c1291975987e2798762205 (diff)
Fix disabling OpenGL vsync on macOS 10.14.4+ (bug #4575).
-rw-r--r--src/video/cocoa/SDL_cocoaopengl.m7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/video/cocoa/SDL_cocoaopengl.m b/src/video/cocoa/SDL_cocoaopengl.m
index e90e267342..f4acd624a8 100644
--- a/src/video/cocoa/SDL_cocoaopengl.m
+++ b/src/video/cocoa/SDL_cocoaopengl.m
@@ -40,7 +40,7 @@ static CVReturn
DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeStamp* now, const CVTimeStamp* outputTime, CVOptionFlags flagsIn, CVOptionFlags* flagsOut, void* displayLinkContext)
{
SDLOpenGLContext *nscontext = (SDLOpenGLContext *) displayLinkContext;
-
+
/*printf("DISPLAY LINK! %u\n", (unsigned int) SDL_GetTicks()); */
const int setting = SDL_AtomicGet(&nscontext->swapIntervalSetting);
if (setting != 0) { /* nothing to do if vsync is disabled, don't even lock */
@@ -208,6 +208,7 @@ Cocoa_GL_CreateContext(_THIS, SDL_Window * window)
const char *glversion;
int glversion_major;
int glversion_minor;
+ int interval;
if (_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES) {
#if SDL_VIDEO_OPENGL_EGL
@@ -319,6 +320,10 @@ Cocoa_GL_CreateContext(_THIS, SDL_Window * window)
return NULL;
}
+ /* vsync is handled separately by synchronizing with a display link. */
+ interval = 0;
+ [context setValues:&interval forParameter:NSOpenGLContextParameterSwapInterval];
+
if ( Cocoa_GL_MakeCurrent(_this, window, context) < 0 ) {
Cocoa_GL_DeleteContext(_this, context);
SDL_SetError("Failed making OpenGL context current");