Nano-optimisation: Avoid using a block with GCD

This commit is contained in:
Kovid Goyal 2025-10-22 13:40:42 +05:30
parent 6a6b0b47a3
commit 33b9d858ad
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C
2 changed files with 6 additions and 6 deletions

View file

@ -70,6 +70,8 @@
displayLinks.count = 0; displayLinks.count = 0;
} }
static void _glfwDispatchRenderFrame(void *);
static CVReturn static CVReturn
displayLinkCallback( displayLinkCallback(
CVDisplayLinkRef displayLink UNUSED, CVDisplayLinkRef displayLink UNUSED,
@ -84,9 +86,7 @@
CGDirectDisplayID displayID = entry->displayID; CGDirectDisplayID displayID = entry->displayID;
if (should_dispatch) entry->pending_dispatch = true; if (should_dispatch) entry->pending_dispatch = true;
os_unfair_lock_unlock(lock); os_unfair_lock_unlock(lock);
if (should_dispatch) dispatch_async(dispatch_get_main_queue(), ^{ if (should_dispatch) dispatch_async_f(dispatch_get_main_queue(), (void*)(uintptr_t)displayID, _glfwDispatchRenderFrame);
_glfwDispatchRenderFrame(displayID);
});
} }
return kCVReturnSuccess; return kCVReturnSuccess;
} }
@ -241,8 +241,9 @@
} }
} }
void static void
_glfwDispatchRenderFrame(CGDirectDisplayID displayID) { _glfwDispatchRenderFrame(void *passed_in_data) {
CGDirectDisplayID displayID = (uintptr_t)passed_in_data;
_GLFWwindow *w = _glfw.windowListHead; _GLFWwindow *w = _glfw.windowListHead;
while (w) { while (w) {
if (w->ns.renderFrameRequested && displayID == displayIDForWindow(w)) { if (w->ns.renderFrameRequested && displayID == displayIDForWindow(w)) {

View file

@ -245,7 +245,6 @@ void* _glfwLoadLocalVulkanLoaderNS(void);
void _glfwClearDisplayLinks(void); void _glfwClearDisplayLinks(void);
void _glfwRestartDisplayLinks(void); void _glfwRestartDisplayLinks(void);
unsigned _glfwCreateDisplayLink(CGDirectDisplayID); unsigned _glfwCreateDisplayLink(CGDirectDisplayID);
void _glfwDispatchRenderFrame(CGDirectDisplayID);
void _glfwRequestRenderFrame(_GLFWwindow *w); void _glfwRequestRenderFrame(_GLFWwindow *w);
// event loop // event loop