diff options
| author | Tilka <tilkax@gmail.com> | 2020-01-25 21:11:37 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-25 21:11:37 +0000 |
| commit | 2edcb29706e698dc6199a271f998505cd2117d76 (patch) | |
| tree | e6fd27dc449e9ba29afb43088785366d27c37ce0 /Source/Core/VideoCommon/OnScreenDisplay.cpp | |
| parent | a632bc73241a7d1dd244102b05283262be0472f1 (diff) | |
| parent | c08671c4ce00dddf0ed85eb7cebfae4f2b01fc09 (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.cpp | 38 |
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); } } |
