From add76c267a66a146c9a920188c0fdfe40dc4c781 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 16 Jan 2025 22:12:29 +1000 Subject: [PATCH] Achievements: Fix request spam downloading own badge icon --- src/core/fullscreen_ui.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/core/fullscreen_ui.cpp b/src/core/fullscreen_ui.cpp index 7eb411695d..486809b7e9 100644 --- a/src/core/fullscreen_ui.cpp +++ b/src/core/fullscreen_ui.cpp @@ -486,6 +486,7 @@ struct ALIGN_TO_CACHE_LINE UIState bool about_window_open = false; bool achievements_login_window_open = false; std::string current_game_subtitle; + std::string achievements_user_badge_path; // Resources std::shared_ptr app_icon_texture; @@ -1677,17 +1678,17 @@ void FullscreenUI::DrawLandingTemplate(ImVec2* menu_pos, ImVec2* menu_size) ImVec2(time_pos.x - name_size.x - LayoutScale(LAYOUT_MENU_BUTTON_X_PADDING), time_pos.y); ImGui::RenderTextClipped(name_pos, name_pos + name_size, username, nullptr, &name_size); - // TODO: should we cache this? heap allocations bad... - std::string badge_path = Achievements::GetLoggedInUserBadgePath(); - if (!badge_path.empty()) [[likely]] + if (s_state.achievements_user_badge_path.empty()) [[unlikely]] + s_state.achievements_user_badge_path = Achievements::GetLoggedInUserBadgePath(); + if (!s_state.achievements_user_badge_path.empty()) [[likely]] { const ImVec2 badge_size = LayoutScale(LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY, LAYOUT_MENU_BUTTON_HEIGHT_NO_SUMMARY); const ImVec2 badge_pos = ImVec2(name_pos.x - badge_size.x - LayoutScale(LAYOUT_MENU_BUTTON_X_PADDING), time_pos.y); - dl->AddImage(reinterpret_cast(GetCachedTextureAsync(badge_path)), badge_pos, - badge_pos + badge_size); + dl->AddImage(reinterpret_cast(GetCachedTextureAsync(s_state.achievements_user_badge_path)), + badge_pos, badge_pos + badge_size); } } }