From a98df1894705195f7051ef1dfccafffe135149c5 Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Sun, 6 Nov 2022 21:48:55 +0100 Subject: VideoCommon: Hold ImGui lock while initializing and shutting down ImGui. --- Source/Core/VideoCommon/RenderBase.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'Source/Core/VideoCommon/RenderBase.cpp') diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index f787ab7dab..c2fdcbaa3d 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -1009,6 +1009,8 @@ void Renderer::RecordVideoMemory() bool Renderer::InitializeImGui() { + std::unique_lock imgui_lock(m_imgui_mutex); + if (!IMGUI_CHECKVERSION()) { PanicAlertFmt("ImGui version check failed"); @@ -1068,7 +1070,7 @@ bool Renderer::InitializeImGui() return false; m_imgui_last_frame_time = Common::Timer::NowUs(); - BeginImGuiFrame(); + BeginImGuiFrameUnlocked(); // lock is already held return true; } @@ -1129,6 +1131,8 @@ bool Renderer::RecompileImGuiPipeline() void Renderer::ShutdownImGui() { + std::unique_lock imgui_lock(m_imgui_mutex); + ImGui::EndFrame(); ImGui::DestroyContext(); m_imgui_pipeline.reset(); @@ -1139,7 +1143,11 @@ void Renderer::ShutdownImGui() void Renderer::BeginImGuiFrame() { std::unique_lock imgui_lock(m_imgui_mutex); + BeginImGuiFrameUnlocked(); +} +void Renderer::BeginImGuiFrameUnlocked() +{ const u64 current_time_us = Common::Timer::NowUs(); const u64 time_diff_us = current_time_us - m_imgui_last_frame_time; const float time_diff_secs = static_cast(time_diff_us / 1000000.0); -- cgit v1.2.3