From 45ebc5867a745dd4a746694317d715cbcead0871 Mon Sep 17 00:00:00 2001 From: Roxie Linden Date: Tue, 20 Aug 2024 15:34:20 -0700 Subject: Fix hang when incoming p2p or group calls throw up dialog. There were changes in atlasaurus that resulted in a hang for incoming p2p and group calls which throw up dialogs. The changes revolved around mutex, coroutines, job queues, and such. The fix was to do any processing that may result in callbacks from the webrtc code in a queued job instead of a coroutine. --- indra/newview/llvoicewebrtc.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/indra/newview/llvoicewebrtc.cpp b/indra/newview/llvoicewebrtc.cpp index 387016f9af..1ea5ef2670 100644 --- a/indra/newview/llvoicewebrtc.cpp +++ b/indra/newview/llvoicewebrtc.cpp @@ -549,13 +549,20 @@ void LLWebRTCVoiceClient::voiceConnectionCoro() updatePosition(); } } - - sessionState::processSessionStates(); - if (mProcessChannels && voiceEnabled && !mHidden) - { - sendPositionUpdate(false); - updateOwnVolume(); - } + LL::WorkQueue::postMaybe(mMainQueue, + [=] { + if (sShuttingDown) + { + return; + } + sessionState::processSessionStates(); + //sessionState::processSessionStates(); + if (mProcessChannels && voiceEnabled && !mHidden) + { + sendPositionUpdate(false); + updateOwnVolume(); + } + }); } } catch (const LLCoros::Stop&) @@ -2221,6 +2228,7 @@ void LLVoiceWebRTCConnection::OnIceCandidate(const llwebrtc::LLWebRTCIceCandidat void LLVoiceWebRTCConnection::processIceUpdates() { mOutstandingRequests++; + LLCoros::getInstance()->launch("LLVoiceWebRTCConnection::processIceUpdatesCoro", boost::bind(&LLVoiceWebRTCConnection::processIceUpdatesCoro, this->shared_from_this())); } -- cgit v1.2.3 From 7560bd0be2c4fbbe9bd9d3b218704229573fb5bc Mon Sep 17 00:00:00 2001 From: Roxie Linden Date: Tue, 20 Aug 2024 17:14:00 -0700 Subject: removed unnecessary comment --- indra/newview/llvoicewebrtc.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/newview/llvoicewebrtc.cpp b/indra/newview/llvoicewebrtc.cpp index 1ea5ef2670..4c3ab11623 100644 --- a/indra/newview/llvoicewebrtc.cpp +++ b/indra/newview/llvoicewebrtc.cpp @@ -556,7 +556,6 @@ void LLWebRTCVoiceClient::voiceConnectionCoro() return; } sessionState::processSessionStates(); - //sessionState::processSessionStates(); if (mProcessChannels && voiceEnabled && !mHidden) { sendPositionUpdate(false); -- cgit v1.2.3