Use buffer instead of raw struct

This commit is contained in:
Florian Spieß 2018-08-24 20:35:24 +02:00
parent ef5e7f389c
commit 64e192b326
No known key found for this signature in database
GPG Key ID: 1D7813E7FB8AA900

View File

@ -62,7 +62,7 @@ static int LastDisconnectErrorCode{0};
static char LastDisconnectErrorMessage[256]; static char LastDisconnectErrorMessage[256];
static std::mutex PresenceMutex; static std::mutex PresenceMutex;
static std::mutex HandlerMutex; static std::mutex HandlerMutex;
static DiscordRichPresence CurrentPresence{}; static QueuedMessage CurrentPresence{};
static QueuedMessage QueuedPresence{}; static QueuedMessage QueuedPresence{};
static MsgQueue<QueuedMessage, MessageQueueSize> SendQueue; static MsgQueue<QueuedMessage, MessageQueueSize> SendQueue;
static MsgQueue<User, JoinQueueSize> JoinAskQueue; static MsgQueue<User, JoinQueueSize> JoinAskQueue;
@ -311,7 +311,10 @@ extern "C" DISCORD_EXPORT void Discord_Initialize(const char* applicationId,
Connection = RpcConnection::Create(applicationId); Connection = RpcConnection::Create(applicationId);
Connection->onConnect = [](JsonDocument& readyMessage) { Connection->onConnect = [](JsonDocument& readyMessage) {
Discord_UpdateHandlers(&QueuedHandlers); Discord_UpdateHandlers(&QueuedHandlers);
Discord_UpdatePresence(&CurrentPresence); if (CurrentPresence.length > 0) {
QueuedPresence.Copy(CurrentPresence);
SignalIOActivity();
}
auto data = GetObjMember(&readyMessage, "data"); auto data = GetObjMember(&readyMessage, "data");
auto user = GetObjMember(data, "user"); auto user = GetObjMember(data, "user");
auto userId = GetStrMember(user, "id"); auto userId = GetStrMember(user, "id");
@ -352,7 +355,6 @@ extern "C" DISCORD_EXPORT void Discord_Shutdown(void)
Connection->onConnect = nullptr; Connection->onConnect = nullptr;
Connection->onDisconnect = nullptr; Connection->onDisconnect = nullptr;
Handlers = {}; Handlers = {};
CurrentPresence = {};
if (IoThread != nullptr) { if (IoThread != nullptr) {
IoThread->Stop(); IoThread->Stop();
delete IoThread; delete IoThread;
@ -370,10 +372,10 @@ extern "C" DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence*
QueuedPresence.buffer, sizeof(QueuedPresence.buffer), Nonce++, Pid, presence); QueuedPresence.buffer, sizeof(QueuedPresence.buffer), Nonce++, Pid, presence);
} }
if (presence) { if (presence) {
CurrentPresence = *presence; CurrentPresence.Copy(QueuedPresence);
} }
else { else {
CurrentPresence = {}; CurrentPresence.length = 0;
} }
SignalIOActivity(); SignalIOActivity();
} }