From 33b9d858ad225ca28f8b3d65ccdb7ca97dbf295a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 22 Oct 2025 13:40:42 +0530 Subject: [PATCH] Nano-optimisation: Avoid using a block with GCD --- glfw/cocoa_displaylink.m | 11 ++++++----- glfw/cocoa_platform.h | 1 - 2 files changed, 6 insertions(+), 6 deletions(-) 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