From 702613915bb05e3949bc91520aeb992ae0dfafa1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 19 Feb 2019 14:43:36 +0530 Subject: [PATCH] Revert "macOS: Fix v-sync to monitor refresh rate no longer working under Mojave." This reverts commit 104e2139340599234070e04adbbb0aeb7ff873c4. Fixes #1393 --- docs/changelog.rst | 3 --- glfw/nsgl_context.h | 7 +----- glfw/nsgl_context.m | 53 +++------------------------------------------ 3 files changed, 4 insertions(+), 59 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 0b51c5dda..fd8d57a28 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -58,9 +58,6 @@ To update |kitty|, :doc:`follow the instructions `. - macOS: When closing a top-level window only switch focus to the previous kitty window if it is on the same workspace (:iss:`1379`) -- macOS: Fix v-sync to monitor refresh rate no longer working under Mojave. See - :opt:`sync_to_monitor` - 0.13.3 [2019-01-19] ------------------------------ diff --git a/glfw/nsgl_context.h b/glfw/nsgl_context.h index b7ddf10c1..585ae72fc 100644 --- a/glfw/nsgl_context.h +++ b/glfw/nsgl_context.h @@ -27,8 +27,6 @@ #define _GLFW_PLATFORM_CONTEXT_STATE _GLFWcontextNSGL nsgl #define _GLFW_PLATFORM_LIBRARY_CONTEXT_STATE _GLFWlibraryNSGL nsgl -#import -#include // NSGL-specific per-context data // @@ -36,10 +34,6 @@ typedef struct _GLFWcontextNSGL { id pixelFormat; id object; - CVDisplayLinkRef displayLink; - atomic_int swapInterval; - int swapIntervalsPassed; - id swapIntervalCond; } _GLFWcontextNSGL; @@ -59,3 +53,4 @@ GLFWbool _glfwCreateContextNSGL(_GLFWwindow* window, const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig); void _glfwDestroyContextNSGL(_GLFWwindow* window); + diff --git a/glfw/nsgl_context.m b/glfw/nsgl_context.m index 8c7822c9a..2c7211f7a 100644 --- a/glfw/nsgl_context.m +++ b/glfw/nsgl_context.m @@ -32,27 +32,6 @@ #define NSOpenGLContextParameterSurfaceOpacity NSOpenGLCPSurfaceOpacity #endif -static CVReturn displayLinkCallback(CVDisplayLinkRef displayLink, - const CVTimeStamp* now, - const CVTimeStamp* outputTime, - CVOptionFlags flagsIn, - CVOptionFlags* flagsOut, - void* userInfo) -{ - _GLFWwindow* window = (_GLFWwindow *) userInfo; - - const int setting = atomic_load(&window->context.nsgl.swapInterval); - if (setting > 0) - { - [window->context.nsgl.swapIntervalCond lock]; - window->context.nsgl.swapIntervalsPassed++; - [window->context.nsgl.swapIntervalCond signal]; - [window->context.nsgl.swapIntervalCond unlock]; - } - - return kCVReturnSuccess; -} - static void makeContextCurrentNSGL(_GLFWwindow* window) { if (window) @@ -65,18 +44,6 @@ static void makeContextCurrentNSGL(_GLFWwindow* window) static void swapBuffersNSGL(_GLFWwindow* window) { - - const int setting = atomic_load(&window->context.nsgl.swapInterval); - if (setting > 0) - { - [window->context.nsgl.swapIntervalCond lock]; - do - { - [window->context.nsgl.swapIntervalCond wait]; - } while (window->context.nsgl.swapIntervalsPassed % setting != 0); - window->context.nsgl.swapIntervalsPassed = 0; - [window->context.nsgl.swapIntervalCond unlock]; - } // ARP appears to be unnecessary, but this is future-proof [window->context.nsgl.object flushBuffer]; } @@ -85,11 +52,9 @@ static void swapIntervalNSGL(int interval) { _GLFWwindow* window = _glfwPlatformGetTls(&_glfw.contextSlot); - atomic_store(&window->context.nsgl.swapInterval, interval); - [window->context.nsgl.swapIntervalCond lock]; - window->context.nsgl.swapIntervalsPassed = 0; - - [window->context.nsgl.swapIntervalCond unlock]; + GLint sync = interval; + [window->context.nsgl.object setValues:&sync + forParameter:NSOpenGLContextParameterSwapInterval]; } static int extensionSupportedNSGL(const char* extension) @@ -351,18 +316,6 @@ GLFWbool _glfwCreateContextNSGL(_GLFWwindow* window, window->context.getProcAddress = getProcAddressNSGL; window->context.destroy = destroyContextNSGL; - CVDisplayLinkCreateWithActiveCGDisplays(&window->context.nsgl.displayLink); - CVDisplayLinkSetOutputCallback(window->context.nsgl.displayLink, - &displayLinkCallback, - window); - CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext( - window->context.nsgl.displayLink, - (CGLContextObj)window->context.nsgl.object, - (CGLPixelFormatObj)window->context.nsgl.pixelFormat); - CVDisplayLinkStart(window->context.nsgl.displayLink); - - window->context.nsgl.swapIntervalCond = [NSCondition new]; - return GLFW_TRUE; }