From 84c04bcfeb3f25805b656fe1e70eae90ad3e0339 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Tue, 8 Nov 2022 00:08:56 +0600 Subject: [PATCH] [OSX] Fixed multi-window freeze on Show when another window is rendering --- native/Avalonia.Native/src/OSX/rendertarget.mm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/native/Avalonia.Native/src/OSX/rendertarget.mm b/native/Avalonia.Native/src/OSX/rendertarget.mm index 2075cc85ab..1c22c91207 100644 --- a/native/Avalonia.Native/src/OSX/rendertarget.mm +++ b/native/Avalonia.Native/src/OSX/rendertarget.mm @@ -183,8 +183,11 @@ static IAvnGlSurfaceRenderTarget* CreateGlRenderTarget(IOSurfaceRenderTarget* ta [_layer setContents: (__bridge IOSurface*) surface->surface]; } [CATransaction commit]; - [CATransaction flush]; } + // This can trigger event processing on the main thread + // which might need to lock the renderer + // which can cause a deadlock. So flush call is outside of the lock + [CATransaction flush]; } else dispatch_async(dispatch_get_main_queue(), ^{