Created EventHandlerV2 and added client to DoFrame

As MemoryPeeker V1 is no longer in use, it is deleted and MemoryPeekerV2 is renamed in its place.
This commit is contained in:
LillyJadeKatrin 2024-03-30 17:30:58 -04:00
parent 7497df99df
commit c88d4cf040
2 changed files with 11 additions and 47 deletions

View File

@ -36,10 +36,11 @@ void AchievementManager::Init()
{ {
if (!m_client && Config::Get(Config::RA_ENABLED)) if (!m_client && Config::Get(Config::RA_ENABLED))
{ {
m_client = rc_client_create(MemoryPeekerV2, RequestV2); m_client = rc_client_create(MemoryPeeker, RequestV2);
std::string host_url = Config::Get(Config::RA_HOST_URL); std::string host_url = Config::Get(Config::RA_HOST_URL);
if (!host_url.empty()) if (!host_url.empty())
rc_client_set_host(m_client, host_url.c_str()); rc_client_set_host(m_client, host_url.c_str());
rc_client_set_event_handler(m_client, EventHandlerV2);
rc_client_enable_logging(m_client, RC_CLIENT_LOG_LEVEL_VERBOSE, rc_client_enable_logging(m_client, RC_CLIENT_LOG_LEVEL_VERBOSE,
[](const char* message, const rc_client_t* client) { [](const char* message, const rc_client_t* client) {
INFO_LOG_FMT(ACHIEVEMENTS, "{}", message); INFO_LOG_FMT(ACHIEVEMENTS, "{}", message);
@ -215,15 +216,7 @@ void AchievementManager::DoFrame()
} }
{ {
std::lock_guard lg{m_lock}; std::lock_guard lg{m_lock};
rc_runtime_do_frame( rc_client_do_frame(m_client);
&m_runtime,
[](const rc_runtime_event_t* runtime_event) {
GetInstance().AchievementEventHandler(runtime_event);
},
[](unsigned address, unsigned num_bytes, void* ud) {
return static_cast<AchievementManager*>(ud)->MemoryPeeker(address, num_bytes, ud);
},
this, nullptr);
} }
if (!m_system) if (!m_system)
return; return;
@ -237,36 +230,6 @@ void AchievementManager::DoFrame()
} }
} }
u32 AchievementManager::MemoryPeeker(u32 address, u32 num_bytes, void* ud)
{
if (!m_system)
return 0u;
Core::CPUThreadGuard threadguard(*m_system);
switch (num_bytes)
{
case 1:
return m_system->GetMMU()
.HostTryReadU8(threadguard, address, PowerPC::RequestedAddressSpace::Physical)
.value_or(PowerPC::ReadResult<u8>(false, 0u))
.value;
case 2:
return Common::swap16(
m_system->GetMMU()
.HostTryReadU16(threadguard, address, PowerPC::RequestedAddressSpace::Physical)
.value_or(PowerPC::ReadResult<u16>(false, 0u))
.value);
case 4:
return Common::swap32(
m_system->GetMMU()
.HostTryReadU32(threadguard, address, PowerPC::RequestedAddressSpace::Physical)
.value_or(PowerPC::ReadResult<u32>(false, 0u))
.value);
default:
ASSERT(false);
return 0u;
}
}
void AchievementManager::AchievementEventHandler(const rc_runtime_event_t* runtime_event) void AchievementManager::AchievementEventHandler(const rc_runtime_event_t* runtime_event)
{ {
switch (runtime_event->type) switch (runtime_event->type)
@ -757,10 +720,7 @@ void AchievementManager::GenerateRichPresence(const Core::CPUThreadGuard& guard)
std::lock_guard lg{m_lock}; std::lock_guard lg{m_lock};
rc_runtime_get_richpresence( rc_runtime_get_richpresence(
&m_runtime, m_rich_presence.data(), RP_SIZE, &m_runtime, m_rich_presence.data(), RP_SIZE,
[](unsigned address, unsigned num_bytes, void* ud) { [](unsigned address, unsigned num_bytes, void* ud) { return 0u; }, this, nullptr);
return static_cast<AchievementManager*>(ud)->MemoryPeeker(address, num_bytes, ud);
},
this, nullptr);
} }
AchievementManager::ResponseType AchievementManager::AwardAchievement(AchievementId achievement_id) AchievementManager::ResponseType AchievementManager::AwardAchievement(AchievementId achievement_id)
@ -1168,7 +1128,7 @@ void AchievementManager::RequestV2(const rc_api_request_t* request,
}); });
} }
u32 AchievementManager::MemoryPeekerV2(u32 address, u8* buffer, u32 num_bytes, rc_client_t* client) u32 AchievementManager::MemoryPeeker(u32 address, u8* buffer, u32 num_bytes, rc_client_t* client)
{ {
if (buffer == nullptr) if (buffer == nullptr)
return 0u; return 0u;
@ -1239,4 +1199,8 @@ void AchievementManager::FetchBadge(AchievementManager::BadgeStatus* badge, u32
}); });
} }
void AchievementManager::EventHandlerV2(const rc_client_event_t* event, rc_client_t* client)
{
}
#endif // USE_RETRO_ACHIEVEMENTS #endif // USE_RETRO_ACHIEVEMENTS

View File

@ -127,7 +127,6 @@ public:
void FetchGameBadges(); void FetchGameBadges();
void DoFrame(); void DoFrame();
u32 MemoryPeeker(u32 address, u32 num_bytes, void* ud);
void AchievementEventHandler(const rc_runtime_event_t* runtime_event); void AchievementEventHandler(const rc_runtime_event_t* runtime_event);
std::recursive_mutex& GetLock(); std::recursive_mutex& GetLock();
@ -201,8 +200,9 @@ private:
static void RequestV2(const rc_api_request_t* request, rc_client_server_callback_t callback, static void RequestV2(const rc_api_request_t* request, rc_client_server_callback_t callback,
void* callback_data, rc_client_t* client); void* callback_data, rc_client_t* client);
static u32 MemoryPeekerV2(u32 address, u8* buffer, u32 num_bytes, rc_client_t* client); static u32 MemoryPeeker(u32 address, u8* buffer, u32 num_bytes, rc_client_t* client);
void FetchBadge(BadgeStatus* badge, u32 badge_type, const BadgeNameFunction function); void FetchBadge(BadgeStatus* badge, u32 badge_type, const BadgeNameFunction function);
static void EventHandlerV2(const rc_client_event_t* event, rc_client_t* client);
rc_runtime_t m_runtime{}; rc_runtime_t m_runtime{};
rc_client_t* m_client{}; rc_client_t* m_client{};