From 8f8f7cd1cbfe05101cb10d3e36187b12a7201531 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 12 Apr 2025 12:35:05 +1000 Subject: [PATCH] Achievements: Queue RAIntegration writes on CPU thread --- src/core/achievements.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/achievements.cpp b/src/core/achievements.cpp index ba17a471a..1eb41de63 100644 --- a/src/core/achievements.cpp +++ b/src/core/achievements.cpp @@ -4749,8 +4749,9 @@ void Achievements::RAIntegrationEventHandler(const rc_client_raintegration_event void Achievements::RAIntegrationWriteMemoryCallback(uint32_t address, uint8_t* buffer, uint32_t num_bytes, rc_client_t* client) { - // I hope this is called on the CPU thread... - CPU::SafeWriteMemoryBytes(address, buffer, num_bytes); + // This can be called on the UI thread, so always queue it. + llvm::SmallVector data(buffer, buffer + num_bytes); + Host::RunOnCPUThread([address, data = std::move(data)]() { CPU::SafeWriteMemoryBytes(address, data); }); } void Achievements::RAIntegrationGetGameNameCallback(char* buffer, uint32_t buffer_size, rc_client_t* client)