From 64e192b32685feaaaf8f7f8e2aa325649d923d79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Spie=C3=9F?= Date: Fri, 24 Aug 2018 20:35:24 +0200 Subject: [PATCH] Use buffer instead of raw struct --- src/discord_rpc.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/discord_rpc.cpp b/src/discord_rpc.cpp index dae3ac0..6156a5f 100644 --- a/src/discord_rpc.cpp +++ b/src/discord_rpc.cpp @@ -62,7 +62,7 @@ static int LastDisconnectErrorCode{0}; static char LastDisconnectErrorMessage[256]; static std::mutex PresenceMutex; static std::mutex HandlerMutex; -static DiscordRichPresence CurrentPresence{}; +static QueuedMessage CurrentPresence{}; static QueuedMessage QueuedPresence{}; static MsgQueue SendQueue; static MsgQueue JoinAskQueue; @@ -311,7 +311,10 @@ extern "C" DISCORD_EXPORT void Discord_Initialize(const char* applicationId, Connection = RpcConnection::Create(applicationId); Connection->onConnect = [](JsonDocument& readyMessage) { Discord_UpdateHandlers(&QueuedHandlers); - Discord_UpdatePresence(&CurrentPresence); + if (CurrentPresence.length > 0) { + QueuedPresence.Copy(CurrentPresence); + SignalIOActivity(); + } auto data = GetObjMember(&readyMessage, "data"); auto user = GetObjMember(data, "user"); auto userId = GetStrMember(user, "id"); @@ -352,7 +355,6 @@ extern "C" DISCORD_EXPORT void Discord_Shutdown(void) Connection->onConnect = nullptr; Connection->onDisconnect = nullptr; Handlers = {}; - CurrentPresence = {}; if (IoThread != nullptr) { IoThread->Stop(); delete IoThread; @@ -370,10 +372,10 @@ extern "C" DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence* QueuedPresence.buffer, sizeof(QueuedPresence.buffer), Nonce++, Pid, presence); } if (presence) { - CurrentPresence = *presence; + CurrentPresence.Copy(QueuedPresence); } else { - CurrentPresence = {}; + CurrentPresence.length = 0; } SignalIOActivity(); }