diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp index 56d2a2a311..9c262fee94 100644 --- a/Source/Core/Core/AchievementManager.cpp +++ b/Source/Core/Core/AchievementManager.cpp @@ -55,6 +55,10 @@ void AchievementManager::Init() void AchievementManager::SetUpdateCallback(UpdateCallback callback) { m_update_callback = std::move(callback); + + if (!m_update_callback) + m_update_callback = [] {}; + m_update_callback(); } @@ -69,8 +73,8 @@ AchievementManager::ResponseType AchievementManager::Login(const std::string& pa const ResponseType r_type = VerifyCredentials(password); FetchBadges(); - if (m_update_callback) - m_update_callback(); + + m_update_callback(); return r_type; } @@ -86,8 +90,7 @@ void AchievementManager::LoginAsync(const std::string& password, const ResponseC m_queue.EmplaceItem([this, password, callback] { callback(VerifyCredentials(password)); FetchBadges(); - if (m_update_callback) - m_update_callback(); + m_update_callback(); }); } @@ -316,8 +319,7 @@ void AchievementManager::LoadGameSync(const ResponseCallback& callback) m_last_ping_time = 0; INFO_LOG_FMT(ACHIEVEMENTS, "RetroAchievements successfully loaded for {}.", m_game_data.title); - if (m_update_callback) - m_update_callback(); + m_update_callback(); callback(fetch_game_data_response); } @@ -344,8 +346,7 @@ void AchievementManager::LoadUnlockData(const ResponseCallback& callback) } callback(FetchUnlockData(false)); - if (m_update_callback) - m_update_callback(); + m_update_callback(); }); } @@ -382,8 +383,7 @@ void AchievementManager::ActivateDeactivateLeaderboards() rc_runtime_activate_lboard(&m_runtime, leaderboard_id, leaderboard.definition, nullptr, 0); m_queue.EmplaceItem([this, leaderboard_id] { FetchBoardInfo(leaderboard_id); - if (m_update_callback) - m_update_callback(); + m_update_callback(); }); } else @@ -411,8 +411,7 @@ void AchievementManager::FetchBadges() { if (!m_is_runtime_initialized || !IsLoggedIn() || !Config::Get(Config::RA_BADGES_ENABLED)) { - if (m_update_callback) - m_update_callback(); + m_update_callback(); return; } m_image_queue.Cancel(); @@ -447,15 +446,14 @@ void AchievementManager::FetchBadges() { WARN_LOG_FMT(ACHIEVEMENTS, "Failed to download player badge id {}.", name_to_fetch); } - if (m_update_callback) - m_update_callback(); + + m_update_callback(); }); } if (!IsGameLoaded()) { - if (m_update_callback) - m_update_callback(); + m_update_callback(); return; } @@ -494,8 +492,8 @@ void AchievementManager::FetchBadges() { WARN_LOG_FMT(ACHIEVEMENTS, "Failed to download game badge id {}.", name_to_fetch); } - if (m_update_callback) - m_update_callback(); + + m_update_callback(); }); } @@ -581,8 +579,8 @@ void AchievementManager::FetchBadges() WARN_LOG_FMT(ACHIEVEMENTS, "Failed to download unlocked achievement badge id {}.", name_to_fetch); } - if (m_update_callback) - m_update_callback(); + + m_update_callback(); }); } if (unlock_status.locked_badge.name != badge_name_to_fetch) @@ -651,13 +649,13 @@ void AchievementManager::FetchBadges() WARN_LOG_FMT(ACHIEVEMENTS, "Failed to download locked achievement badge id {}.", name_to_fetch); } - if (m_update_callback) - m_update_callback(); + + m_update_callback(); }); } } - if (m_update_callback) - m_update_callback(); + + m_update_callback(); } void AchievementManager::DoFrame() @@ -691,8 +689,7 @@ void AchievementManager::DoFrame() GenerateRichPresence(); m_queue.EmplaceItem([this] { PingRichPresence(m_rich_presence); }); m_last_ping_time = current_time; - if (m_update_callback) - m_update_callback(); + m_update_callback(); } } @@ -755,8 +752,8 @@ void AchievementManager::AchievementEventHandler(const rc_runtime_event_t* runti break; } } - if (m_update_callback) - m_update_callback(); + + m_update_callback(); } std::recursive_mutex& AchievementManager::GetLock() @@ -920,8 +917,8 @@ void AchievementManager::CloseGame() m_system = nullptr; } } - if (m_update_callback) - m_update_callback(); + + m_update_callback(); INFO_LOG_FMT(ACHIEVEMENTS, "Game closed."); } @@ -933,8 +930,8 @@ void AchievementManager::Logout() m_player_badge.name = ""; Config::SetBaseOrCurrent(Config::RA_API_TOKEN, ""); } - if (m_update_callback) - m_update_callback(); + + m_update_callback(); INFO_LOG_FMT(ACHIEVEMENTS, "Logged out from server."); } @@ -1593,8 +1590,7 @@ void AchievementManager::HandleLeaderboardTriggeredEvent(const rc_runtime_event_ } m_queue.EmplaceItem([this, event_id] { FetchBoardInfo(event_id); - if (m_update_callback) - m_update_callback(); + m_update_callback(); }); break; } diff --git a/Source/Core/Core/AchievementManager.h b/Source/Core/Core/AchievementManager.h index 43ac903b13..3c67edd85d 100644 --- a/Source/Core/Core/AchievementManager.h +++ b/Source/Core/Core/AchievementManager.h @@ -204,7 +204,7 @@ private: rc_runtime_t m_runtime{}; Core::System* m_system{}; bool m_is_runtime_initialized = false; - UpdateCallback m_update_callback; + UpdateCallback m_update_callback = [] {}; std::unique_ptr m_loading_volume; bool m_disabled = false; std::string m_display_name;