diff --git a/glfw/cocoa_displaylink.m b/glfw/cocoa_displaylink.m index 47c0b3011..43bf4d239 100644 --- a/glfw/cocoa_displaylink.m +++ b/glfw/cocoa_displaylink.m @@ -70,6 +70,8 @@ _glfwClearDisplayLinks(void) { displayLinks.count = 0; } +static void _glfwDispatchRenderFrame(void *); + static CVReturn displayLinkCallback( CVDisplayLinkRef displayLink UNUSED, @@ -84,9 +86,7 @@ displayLinkCallback( CGDirectDisplayID displayID = entry->displayID; if (should_dispatch) entry->pending_dispatch = true; os_unfair_lock_unlock(lock); - if (should_dispatch) dispatch_async(dispatch_get_main_queue(), ^{ - _glfwDispatchRenderFrame(displayID); - }); + if (should_dispatch) dispatch_async_f(dispatch_get_main_queue(), (void*)(uintptr_t)displayID, _glfwDispatchRenderFrame); } return kCVReturnSuccess; } @@ -241,8 +241,9 @@ _glfwRequestRenderFrame(_GLFWwindow *w) { } } -void -_glfwDispatchRenderFrame(CGDirectDisplayID displayID) { +static void +_glfwDispatchRenderFrame(void *passed_in_data) { + CGDirectDisplayID displayID = (uintptr_t)passed_in_data; _GLFWwindow *w = _glfw.windowListHead; while (w) { if (w->ns.renderFrameRequested && displayID == displayIDForWindow(w)) { diff --git a/glfw/cocoa_platform.h b/glfw/cocoa_platform.h index fd2ee6c05..d36bdc677 100644 --- a/glfw/cocoa_platform.h +++ b/glfw/cocoa_platform.h @@ -245,7 +245,6 @@ void* _glfwLoadLocalVulkanLoaderNS(void); void _glfwClearDisplayLinks(void); void _glfwRestartDisplayLinks(void); unsigned _glfwCreateDisplayLink(CGDirectDisplayID); -void _glfwDispatchRenderFrame(CGDirectDisplayID); void _glfwRequestRenderFrame(_GLFWwindow *w); // event loop