diff --git a/src/core/achievements.cpp b/src/core/achievements.cpp index e8f65b49e..de4ad46fe 100644 --- a/src/core/achievements.cpp +++ b/src/core/achievements.cpp @@ -832,6 +832,15 @@ void Achievements::IdleUpdate() rc_client_idle(s_state.client); } +bool Achievements::NeedsIdleUpdate() +{ + if (!IsActive()) + return false; + + const auto lock = GetLock(); + return (s_state.http_downloader && s_state.http_downloader->HasAnyRequests()); +} + void Achievements::FrameUpdate() { if (!IsActive()) diff --git a/src/core/achievements.h b/src/core/achievements.h index 2a355a8c8..7a2b5dc89 100644 --- a/src/core/achievements.h +++ b/src/core/achievements.h @@ -58,6 +58,9 @@ void FrameUpdate(); /// Called when the system is paused, because FrameUpdate() won't be getting called. void IdleUpdate(); +/// Returns true if idle updates are necessary (e.g. outstanding requests). +bool NeedsIdleUpdate(); + /// Saves/loads state. bool DoState(StateWrapper& sw);