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(-) (limited to 'indra/newview') 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