From c08671c4ce00dddf0ed85eb7cebfae4f2b01fc09 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Fri, 24 Jan 2020 11:00:58 -0600 Subject: [PATCH] VideoCommon/OSD: Process OSD messages even when they are disabled. --- Source/Core/VideoCommon/OnScreenDisplay.cpp | 38 +++++++++++---------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/Source/Core/VideoCommon/OnScreenDisplay.cpp b/Source/Core/VideoCommon/OnScreenDisplay.cpp index 35e35b217f..68afd3e6ab 100644 --- a/Source/Core/VideoCommon/OnScreenDisplay.cpp +++ b/Source/Core/VideoCommon/OnScreenDisplay.cpp @@ -94,29 +94,31 @@ void AddMessage(std::string message, u32 ms, u32 rgba) void DrawMessages() { - if (!SConfig::GetInstance().bOnScreenDisplayMessages) - return; + const bool draw_messages = SConfig::GetInstance().bOnScreenDisplayMessages; + const u32 now = Common::Timer::GetTimeMs(); + const float current_x = LEFT_MARGIN * ImGui::GetIO().DisplayFramebufferScale.x; + float current_y = TOP_MARGIN * ImGui::GetIO().DisplayFramebufferScale.y; + int index = 0; + std::lock_guard lock{s_messages_mutex}; + + for (auto it = s_messages.begin(); it != s_messages.end();) { - std::lock_guard lock{s_messages_mutex}; + const Message& msg = it->second; + const int time_left = static_cast(msg.timestamp - now); - const u32 now = Common::Timer::GetTimeMs(); - float current_x = LEFT_MARGIN * ImGui::GetIO().DisplayFramebufferScale.x; - float current_y = TOP_MARGIN * ImGui::GetIO().DisplayFramebufferScale.y; - int index = 0; - - auto it = s_messages.begin(); - while (it != s_messages.end()) + if (time_left <= 0) { - const Message& msg = it->second; - const int time_left = static_cast(msg.timestamp - now); - current_y += DrawMessage(index++, msg, ImVec2(current_x, current_y), time_left); - - if (time_left <= 0) - it = s_messages.erase(it); - else - ++it; + it = s_messages.erase(it); + continue; } + else + { + ++it; + } + + if (draw_messages) + current_y += DrawMessage(index++, msg, ImVec2(current_x, current_y), time_left); } }