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.",