From 8a2238c9421eed9e30ad24ca1c84dfcb927c1efc Mon Sep 17 00:00:00 2001 From: Nelson Carrillo Date: Sun, 5 Aug 2018 18:01:54 -0400 Subject: [PATCH] Fix threading issue with winit --- src/Avalonia.Windowing/WindowingPlatform.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Windowing/WindowingPlatform.cs b/src/Avalonia.Windowing/WindowingPlatform.cs index eb04a81fcd..65102d138f 100644 --- a/src/Avalonia.Windowing/WindowingPlatform.cs +++ b/src/Avalonia.Windowing/WindowingPlatform.cs @@ -35,6 +35,7 @@ namespace Avalonia.Windowing internal static WindowingPlatform Instance { get; private set; } private readonly EventsLoop _eventsLoop; private readonly Dictionary _windows; + private int _uiThreadId; public WindowingPlatform() { @@ -47,6 +48,7 @@ namespace Avalonia.Windowing _eventsLoop.OnShouldExitEventLoop += _eventsLoop_OnShouldExitEventLoop; _eventsLoop.OnCloseRequested += _eventsLoop_OnCloseRequested; _eventsLoop.OnFocused += _eventsLoop_OnFocused; + _uiThreadId = Thread.CurrentThread.ManagedThreadId; _windows = new Dictionary(); } @@ -126,6 +128,7 @@ namespace Avalonia.Windowing _signaled = false; } + System.Diagnostics.Debug.WriteLine(string.Format("TID {0}", Thread.CurrentThread.ManagedThreadId)); Signaled?.Invoke(null); } @@ -151,7 +154,7 @@ namespace Avalonia.Windowing .Bind().ToConstant(this); } - public bool CurrentThreadIsLoopThread => true; + public bool CurrentThreadIsLoopThread => _uiThreadId == Thread.CurrentThread.ManagedThreadId; public event Action Signaled; public IEmbeddableWindowImpl CreateEmbeddableWindow()