diff --git a/src/Windows/Avalonia.Win32/WinRT/Composition/WinUiCompositorConnection.cs b/src/Windows/Avalonia.Win32/WinRT/Composition/WinUiCompositorConnection.cs index 5a8360b515..11721cd47e 100644 --- a/src/Windows/Avalonia.Win32/WinRT/Composition/WinUiCompositorConnection.cs +++ b/src/Windows/Avalonia.Win32/WinRT/Composition/WinUiCompositorConnection.cs @@ -161,12 +161,20 @@ internal class WinUiCompositorConnection : IRenderTimer, Win32.IWindowsSurfaceFa return UnmanagedMethods.DefWindowProc(hwnd, msg, w, l); }); UnmanagedMethods.SetTimer(dw.Handle, IntPtr.Zero, 1000, null); - while (!cts.IsCancellationRequested) + + var result = 0; + while (!cts.IsCancellationRequested + && (result = UnmanagedMethods.GetMessage(out var msg, IntPtr.Zero, 0, 0)) > 0) { - UnmanagedMethods.GetMessage(out var msg, IntPtr.Zero, 0, 0); lock (_shared.SyncRoot) UnmanagedMethods.DispatchMessage(ref msg); } + + if (result < 0) + { + Logger.TryGet(LogEventLevel.Error, "WinUIComposition") + ?.Log(this, "Unmanaged error in {0}. Error Code: {1}", nameof(RunLoop), Marshal.GetLastWin32Error()); + } } public static bool IsSupported()