summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoxie Linden <roxie@lindenlab.com>2023-09-14 21:38:40 -0700
committerRoxie Linden <roxie@lindenlab.com>2024-02-22 23:11:34 -0800
commite0126bfe904ff2d26021a8fa227a75898562778a (patch)
tree2a9b32b869def99d1d879726c69017e5bfb809aa
parent162c38f1d56246eb382a80b6a99703a839082b2c (diff)
fix some shutdown logic in webrtc code
-rw-r--r--indra/newview/llvoicewebrtc.cpp49
1 files changed, 6 insertions, 43 deletions
diff --git a/indra/newview/llvoicewebrtc.cpp b/indra/newview/llvoicewebrtc.cpp
index bd4eff8bcf..92f107bb7c 100644
--- a/indra/newview/llvoicewebrtc.cpp
+++ b/indra/newview/llvoicewebrtc.cpp
@@ -369,23 +369,10 @@ void LLWebRTCVoiceClient::terminate()
{
return;
}
-
- // needs to be done manually here since we will not get another pass in
- // coroutines... that mechanism is long since gone.
- if (mIsLoggedIn)
- {
- logoutOfWebRTC(false);
- }
- if(sConnected)
- {
- breakVoiceConnection(false);
- sConnected = false;
- }
- else
- {
- mRelogRequested = false;
- }
+ mRelogRequested = false;
+ mVoiceEnabled = false;
+ llwebrtc::init();
sShuttingDown = true;
sPump = NULL;
@@ -540,8 +527,7 @@ void LLWebRTCVoiceClient::idle(void* user_data)
typedef enum e_voice_control_coro_state
{
VOICE_STATE_ERROR = -1,
- VOICE_STATE_DONE = 0,
- VOICE_STATE_TP_WAIT, // entry point
+ VOICE_STATE_TP_WAIT = 0, // entry point
VOICE_STATE_START_DAEMON,
VOICE_STATE_PROVISION_ACCOUNT,
VOICE_STATE_SESSION_PROVISION_WAIT,
@@ -685,12 +671,8 @@ void LLWebRTCVoiceClient::voiceControlStateMachine()
current_delay++;
llcoro::suspendUntilTimeout(1.f);
}
- setVoiceControlStateUnless(VOICE_STATE_WAIT_FOR_EXIT);
- }
- else
- {
- setVoiceControlStateUnless(VOICE_STATE_DONE);
}
+ setVoiceControlStateUnless(VOICE_STATE_WAIT_FOR_EXIT);
break;
case VOICE_STATE_SESSION_ESTABLISHED:
@@ -729,20 +711,10 @@ void LLWebRTCVoiceClient::voiceControlStateMachine()
}
else
{
- setVoiceControlStateUnless(VOICE_STATE_DONE);
+ llcoro::suspendUntilTimeout(1.0);
}
break;
- case VOICE_STATE_DONE:
- if (mVoiceEnabled)
- {
- setVoiceControlStateUnless(VOICE_STATE_TP_WAIT);
- }
- else
- {
- llcoro::suspendUntilTimeout(1.0);
- }
- break;
default:
{
LL_WARNS("Voice") << "Unknown voice control state " << getVoiceControlState() << LL_ENDL;
@@ -750,15 +722,6 @@ void LLWebRTCVoiceClient::voiceControlStateMachine()
}
}
} while (true);
-
- if (sShuttingDown)
- {
- // LLWebRTCVoiceClient might be already dead
- return;
- }
-
- mIsCoroutineActive = false;
- LL_INFOS("Voice") << "exiting" << LL_ENDL;
}
bool LLWebRTCVoiceClient::callbackEndDaemon(const LLSD& data)