Better fix for macOS deadlock

Fix it in glfw. Dont hold the tick lock when calling the tick callback
as the tick callback might be waiting on a lock.
This commit is contained in:
Kovid Goyal
2023-10-25 18:32:07 +05:30
parent 61c4f80e90
commit ae4a13b249

View File

@@ -1020,12 +1020,15 @@ static NSLock *tick_lock = NULL;
void _glfwDispatchTickCallback(void) {
if (tick_lock && tick_callback) {
[tick_lock lock];
while(tick_callback_requested) {
while(true) {
bool do_call = true;
[tick_lock lock];
if (!tick_callback_requested) do_call = false;
tick_callback_requested = false;
tick_callback(tick_callback_data);
[tick_lock unlock];
if (do_call) tick_callback(tick_callback_data);
else break;
}
[tick_lock unlock];
}
}