Fixed Rich Presence bugs

Refactored the Rich Presence two-minute trigger to clean it up and fix it.
This commit is contained in:
LillyJadeKatrin 2023-06-02 23:38:33 -04:00
parent 7bbd530eb5
commit 60350635b6
2 changed files with 11 additions and 4 deletions

View File

@ -176,6 +176,8 @@ void AchievementManager::LoadGameByFilenameAsync(const std::string& iso_path,
}
ActivateDeactivateLeaderboards();
ActivateDeactivateRichPresence();
// Reset this to zero so that RP immediately triggers on the first frame
m_last_ping_time = 0;
callback(fetch_game_data_response);
});
@ -255,9 +257,13 @@ void AchievementManager::DoFrame()
});
if (!m_system)
return;
u64 current_time = m_system->GetCoreTiming().GetTicks();
if (current_time - m_last_ping_time > SystemTimers::GetTicksPerSecond() * 120)
m_queue.EmplaceItem([this] { PingRichPresence(GenerateRichPresence()); });
time_t current_time = std::time(nullptr);
if (difftime(current_time, m_last_ping_time) > 120)
{
RichPresence rp = GenerateRichPresence();
m_queue.EmplaceItem([this, rp] { PingRichPresence(rp); });
m_last_ping_time = current_time;
}
}
u32 AchievementManager::MemoryPeeker(u32 address, u32 num_bytes, void* ud)

View File

@ -5,6 +5,7 @@
#ifdef USE_RETRO_ACHIEVEMENTS
#include <array>
#include <ctime>
#include <functional>
#include <mutex>
#include <string>
@ -109,7 +110,7 @@ private:
u32 m_game_id = 0;
rc_api_fetch_game_data_response_t m_game_data{};
bool m_is_game_loaded = false;
u64 m_last_ping_time = 0;
time_t m_last_ping_time = 0;
struct UnlockStatus
{