diff --git a/Source/Engine/Platform/Base/WindowBase.cpp b/Source/Engine/Platform/Base/WindowBase.cpp index e2460e373..5cff76361 100644 --- a/Source/Engine/Platform/Base/WindowBase.cpp +++ b/Source/Engine/Platform/Base/WindowBase.cpp @@ -125,6 +125,7 @@ WindowBase::~WindowBase() { ASSERT(!RenderTask); ASSERT(!_swapChain); + WindowsManager::Unregister((Window*)this); } bool WindowBase::IsMain() const diff --git a/Source/Engine/Platform/Base/WindowsManager.cpp b/Source/Engine/Platform/Base/WindowsManager.cpp index ed2106cf5..0d58008d8 100644 --- a/Source/Engine/Platform/Base/WindowsManager.cpp +++ b/Source/Engine/Platform/Base/WindowsManager.cpp @@ -25,7 +25,6 @@ WindowsManagerService WindowsManagerServiceInstance; Window* WindowsManager::GetByNativePtr(void* handle) { Window* result = nullptr; - WindowsLocker.Lock(); for (int32 i = 0; i < Windows.Count(); i++) { @@ -36,7 +35,6 @@ Window* WindowsManager::GetByNativePtr(void* handle) } } WindowsLocker.Unlock(); - return result; } @@ -61,7 +59,7 @@ void WindowsManagerService::Update() // Update windows const float deltaTime = Time::Update.UnscaledDeltaTime.GetTotalSeconds(); WindowsManager::WindowsLocker.Lock(); - for (auto& win : WindowsManager::Windows) + for (Window* win : WindowsManager::Windows) { if (win && win->IsVisible()) win->OnUpdate(deltaTime); @@ -74,7 +72,7 @@ void WindowsManagerService::Dispose() // Close remaining windows WindowsManager::WindowsLocker.Lock(); auto windows = WindowsManager::Windows; - for (auto& win : windows) + for (Window* win : windows) { win->Close(ClosingReason::EngineExit); }