diff --git a/Source/Editor/Managed/ManagedEditor.Internal.cpp b/Source/Editor/Managed/ManagedEditor.Internal.cpp index e01fd04bb..969608676 100644 --- a/Source/Editor/Managed/ManagedEditor.Internal.cpp +++ b/Source/Editor/Managed/ManagedEditor.Internal.cpp @@ -513,7 +513,9 @@ DEFINE_INTERNAL_CALL(void) EditorInternal_RunVisualScriptBreakpointLoopTick(floa WindowsManager::WindowsLocker.Unlock(); } WindowsManager::WindowsLocker.Lock(); - for (auto& win : WindowsManager::Windows) + Array> windows; + windows.Add(WindowsManager::Windows); + for (Window* win : windows) { if (win->IsVisible()) win->OnUpdate(deltaTime); diff --git a/Source/Engine/Platform/Base/WindowsManager.cpp b/Source/Engine/Platform/Base/WindowsManager.cpp index 0d58008d8..34381b3d2 100644 --- a/Source/Engine/Platform/Base/WindowsManager.cpp +++ b/Source/Engine/Platform/Base/WindowsManager.cpp @@ -59,9 +59,11 @@ void WindowsManagerService::Update() // Update windows const float deltaTime = Time::Update.UnscaledDeltaTime.GetTotalSeconds(); WindowsManager::WindowsLocker.Lock(); - for (Window* win : WindowsManager::Windows) + Array> windows; + windows.Add(WindowsManager::Windows); + for (Window* win : windows) { - if (win && win->IsVisible()) + if (win->IsVisible()) win->OnUpdate(deltaTime); } WindowsManager::WindowsLocker.Unlock(); @@ -71,7 +73,8 @@ void WindowsManagerService::Dispose() { // Close remaining windows WindowsManager::WindowsLocker.Lock(); - auto windows = WindowsManager::Windows; + Array> windows; + windows.Add(WindowsManager::Windows); for (Window* win : windows) { win->Close(ClosingReason::EngineExit);