diff --git a/Discord.cs b/Discord.cs index 8a4d60c2..f69d938f 100644 --- a/Discord.cs +++ b/Discord.cs @@ -61,7 +61,17 @@ namespace VRCX private void Update() { - if (m_Client != null) + if (m_Client == null) + { + m_Client = new DiscordRpcClient(DiscordAppId); + if (m_Client.Initialize() == false) + { + m_Client.Dispose(); + m_Client = null; + } + } + + if (m_Client != null && !m_Lock.IsWriteLockHeld) { m_Lock.EnterReadLock(); try @@ -76,24 +86,14 @@ namespace VRCX } } - public void SetActive(bool active) + public void SetInactive() { - if (!active && m_Client != null) + if (m_Client != null) { m_Client.ClearPresence(); m_Client.Dispose(); m_Client = null; } - - if (active && m_Client == null) - { - m_Client = new DiscordRpcClient(DiscordAppId); - if (m_Client.Initialize() == false) - { - m_Client.Dispose(); - m_Client = null; - } - } } // https://stackoverflow.com/questions/1225052/best-way-to-shorten-utf8-string-based-on-byte-length @@ -114,15 +114,18 @@ namespace VRCX public void SetText(string details, string state) { - m_Lock.EnterWriteLock(); - try + if (m_Client != null && !m_Lock.IsReadLockHeld) { - m_Presence.Details = LimitByteLength(details, 127); - m_Presence.State = LimitByteLength(state, 127); - } - finally - { - m_Lock.ExitWriteLock(); + m_Lock.EnterWriteLock(); + try + { + m_Presence.Details = LimitByteLength(details, 127); + m_Presence.State = LimitByteLength(state, 127); + } + finally + { + m_Lock.ExitWriteLock(); + } } } diff --git a/html/src/app.js b/html/src/app.js index 918eadee..f27c9b2d 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -4274,7 +4274,7 @@ speechSynthesis.getVoices(); this.lastLocationReset(); this.clearNowPlaying(); this.updateVRLastLocation(); - this.setDiscordActive(isGameRunning); + this.nextDiscordUpdate = 0; } if (isSteamVRRunning !== this.isSteamVRRunning) { this.isSteamVRRunning = isSteamVRRunning; @@ -7881,7 +7881,6 @@ speechSynthesis.getVoices(); configRepository.setBool('discordJoinButton', this.discordJoinButton); configRepository.setBool('discordHideInvite', this.discordHideInvite); configRepository.setBool('discordHideImage', this.discordHideImage); - this.setDiscordActive(this.isGameRunning); this.lastLocation$.tag = ''; this.updateDiscord(); }; @@ -10003,6 +10002,7 @@ speechSynthesis.getVoices(); !this.isGameRunning || (!currentLocation && !this.lastLocation$.tag) ) { + Discord.SetInactive(); return; } var L = this.lastLocation$; @@ -10172,15 +10172,6 @@ speechSynthesis.getVoices(); } }; - $app.methods.setDiscordActive = function (isGameRunning) { - if (this.discordActive && isGameRunning) { - Discord.SetActive(true); - } else { - Discord.SetText('', ''); - Discord.SetActive(false); - } - }; - $app.methods.lookupUser = async function (ref) { if (ref.userId) { this.showUserDialog(ref.userId);