summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/OnScreenDisplay.cpp
diff options
context:
space:
mode:
authorTilka <tilkax@gmail.com>2020-01-25 21:11:37 +0000
committerGitHub <noreply@github.com>2020-01-25 21:11:37 +0000
commit2edcb29706e698dc6199a271f998505cd2117d76 (patch)
treee6fd27dc449e9ba29afb43088785366d27c37ce0 /Source/Core/VideoCommon/OnScreenDisplay.cpp
parenta632bc73241a7d1dd244102b05283262be0472f1 (diff)
parentc08671c4ce00dddf0ed85eb7cebfae4f2b01fc09 (diff)
Merge pull request #8582 from jordan-woyak/osd-disabled-fix
VideoCommon/OSD: Process OSD messages even when they are disabled.
Diffstat (limited to 'Source/Core/VideoCommon/OnScreenDisplay.cpp')
-rw-r--r--Source/Core/VideoCommon/OnScreenDisplay.cpp38
1 files 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};
+ std::lock_guard lock{s_messages_mutex};
- 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;
+ for (auto it = s_messages.begin(); it != s_messages.end();)
+ {
+ const Message& msg = it->second;
+ const int time_left = static_cast<int>(msg.timestamp - now);
- 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<int>(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);
}
}