Skip to content

Commit

Permalink
Merge pull request #11872 from LillyJadeKatrin/retroachievements-bugfix
Browse files Browse the repository at this point in the history
RetroAchievements Bugfix: Fixed Missing DoFrame Call
  • Loading branch information
AdmiralCurtiss committed Jun 5, 2023
2 parents 678db26 + e2d0ff7 commit 3d4b4cf
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 4 deletions.
15 changes: 12 additions & 3 deletions Source/Core/Core/AchievementManager.cpp
Expand Up @@ -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);
});
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -298,6 +304,9 @@ void AchievementManager::AchievementEventHandler(const rc_runtime_event_t* runti
case RC_RUNTIME_EVENT_LBOARD_STARTED:
HandleLeaderboardStartedEvent(runtime_event);
break;
case RC_RUNTIME_EVENT_LBOARD_CANCELED:
HandleLeaderboardCanceledEvent(runtime_event);
break;
case RC_RUNTIME_EVENT_LBOARD_TRIGGERED:
HandleLeaderboardTriggeredEvent(runtime_event);
break;
Expand Down
3 changes: 2 additions & 1 deletion Source/Core/Core/AchievementManager.h
Expand Up @@ -5,6 +5,7 @@

#ifdef USE_RETRO_ACHIEVEMENTS
#include <array>
#include <ctime>
#include <functional>
#include <mutex>
#include <string>
Expand Down Expand Up @@ -109,7 +110,7 @@ class AchievementManager
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
{
Expand Down
4 changes: 4 additions & 0 deletions Source/Core/Core/Core.cpp
Expand Up @@ -900,6 +900,10 @@ void Callback_NewField(Core::System& system)
CallOnStateChangedCallbacks(Core::GetState());
}
}

#ifdef USE_RETRO_ACHIEVEMENTS
AchievementManager::GetInstance()->DoFrame();
#endif // USE_RETRO_ACHIEVEMENTS
}

void UpdateTitle()
Expand Down

0 comments on commit 3d4b4cf

Please sign in to comment.