From b46b0724c61b0f2835e60f25c8d28c9e14a744e4 Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Wed, 14 Dec 2022 20:52:19 -0500 Subject: [PATCH] Fixes --- indra/cmake/DiscordSDK.cmake | 2 +- indra/newview/aldiscordmanager.cpp | 27 ++++++++++++++++++--------- indra/newview/aldiscordmanager.h | 4 ++++ 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/indra/cmake/DiscordSDK.cmake b/indra/cmake/DiscordSDK.cmake index 9e84ad5811d..9fd27a9c75b 100644 --- a/indra/cmake/DiscordSDK.cmake +++ b/indra/cmake/DiscordSDK.cmake @@ -33,7 +33,7 @@ if (USE_DISCORD) endif (STANDALONE) if(DEFINED ENV{DISCORD_CLIENTID}) - set(DISCORD_CLIENTID $ENV{SENTRY_DSN} CACHE STRING "Discord Client ID" FORCE) + set(DISCORD_CLIENTID $ENV{DISCORD_CLIENTID} CACHE STRING "Discord Client ID" FORCE) else() set(DISCORD_CLIENTID "" CACHE STRING "Discord Client ID") endif() diff --git a/indra/newview/aldiscordmanager.cpp b/indra/newview/aldiscordmanager.cpp index 9a6284f3e6f..4379658ac36 100644 --- a/indra/newview/aldiscordmanager.cpp +++ b/indra/newview/aldiscordmanager.cpp @@ -119,10 +119,12 @@ void ALDiscordManager::init() }); LLEventPumps::instance().obtain("mainloop").listen("ALDiscordManager", boost::bind(&ALDiscordManager::update, this, _1)); + mRegionChangeConnection = gAgent.addRegionChangedCallback(boost::bind(&ALDiscordManager::onRegionChange, this)); } void ALDiscordManager::shutdown() { + mRegionChangeConnection.disconnect(); LLEventPumps::instance().obtain("mainloop").stopListening("ALDiscordManager"); mDiscord.reset(); } @@ -145,9 +147,25 @@ bool ALDiscordManager::update(const LLSD&) void ALDiscordManager::onLoginCompleted() { mLoggedInTime = LLDate::now().secondsSinceEpoch(); + onRegionChange(); updateActivity(); } +void ALDiscordManager::onRegionChange() +{ + if (gAgent.getRegionHost() != mCurrentHost) + { + LLMessageSystem* msg = gMessageSystem; + msg->newMessageFast(_PREHASH_RequestRegionInfo); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + gAgent.sendReliableMessage(); + + mCurrentHost = gAgent.getRegionHost(); + } +} + void ALDiscordManager::updateActivity() { LLViewerRegion* region = gAgent.getRegion(); @@ -216,15 +234,6 @@ void ALDiscordManager::updateActivity() { activity.GetParty().GetSize().SetMaxSize(max_agents); } - else - { - LLMessageSystem* msg = gMessageSystem; - msg->newMessageFast(_PREHASH_RequestRegionInfo); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - gAgent.sendReliableMessage(); - } activity.GetParty().SetId(regionId.c_str()); activity.GetParty().SetPrivacy(discord::ActivityPartyPrivacy::Public); diff --git a/indra/newview/aldiscordmanager.h b/indra/newview/aldiscordmanager.h index 5cf39d1d14d..8ad3c183574 100644 --- a/indra/newview/aldiscordmanager.h +++ b/indra/newview/aldiscordmanager.h @@ -28,6 +28,7 @@ #define AL_DISCORDMANAGER_H #include "llsingleton.h" +#include "llhost.h" #include "discord.h" @@ -45,9 +46,12 @@ class ALDiscordManager final private: void onLoginCompleted(); + void onRegionChange(); void updateActivity(); + boost::signals2::connection mRegionChangeConnection; std::unique_ptr<discord::Core> mDiscord; + LLHost mCurrentHost; F64 mLoggedInTime = 0.0; }; -- GitLab