From a97ba52dbf85692f0158373706ca5cf1101557d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20J=2E=20Est=C3=A9banez?= Date: Tue, 23 Apr 2024 19:30:04 +0200 Subject: [PATCH] Prevent deadlock if working on non-main thread --- MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm index b656c1be..cea69a4b 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm @@ -615,9 +615,14 @@ void MVKSwapchain::initSurfaceImages(const VkSwapchainCreateInfoKHR* pCreateInfo if (mtlLayer) { NSString* screenName = @"Main Screen"; #if MVK_MACOS && !MVK_MACCAT - auto* screen = mtlLayer.screenMVK; - if ([screen respondsToSelector:@selector(localizedName)]) { - screenName = screen.localizedName; + // To prevent deadlocks, avoid dispatching to the main thread at the cost of a less informative log. + if (NSThread.currentThread.isMainThread) { + auto* screen = mtlLayer.screenMVK; + if ([screen respondsToSelector:@selector(localizedName)]) { + screenName = screen.localizedName; + } + } else { + screenName = @"?"; } #endif MVKLogInfo("Created %d swapchain images with size (%d, %d) and contents scale %.1f in layer %s (%p) on screen %s.",