diff --git a/src/gameui/imgui_system.cpp b/src/gameui/imgui_system.cpp index cbc480c6..2d5d4bd0 100644 --- a/src/gameui/imgui_system.cpp +++ b/src/gameui/imgui_system.cpp @@ -155,13 +155,12 @@ void CImguiSystem::SwapBuffers() void CImguiSystem::RenderFrame() { Assert(IsInitialized()); - AUTO_LOCK(m_snapshotBufferMutex); - if (!m_hasNewFrame) + if (!m_hasNewFrame.exchange(false)) return; + AUTO_LOCK(m_snapshotBufferMutex); ImGui_ImplDX11_RenderDrawData(&m_snapshotData.DrawData); - m_hasNewFrame = false; } //----------------------------------------------------------------------------- diff --git a/src/gameui/imgui_system.h b/src/gameui/imgui_system.h index 7759b86f..ddc7fd74 100644 --- a/src/gameui/imgui_system.h +++ b/src/gameui/imgui_system.h @@ -46,7 +46,7 @@ private: mutable CThreadMutex m_inputEventQueueMutex; bool m_initialized; - bool m_hasNewFrame; + std::atomic_bool m_hasNewFrame; }; CImguiSystem* ImguiSystem();