#4819 WebRTC crashes after a failed login
parent
95337dfc36
commit
57a9e51360
|
|
@ -1495,6 +1495,10 @@ void freePeerConnection(LLWebRTCPeerConnectionInterface* peer_connection)
|
|||
|
||||
void init(LLWebRTCLogCallback* logCallback)
|
||||
{
|
||||
if (gWebRTCImpl)
|
||||
{
|
||||
return;
|
||||
}
|
||||
gWebRTCImpl = new LLWebRTCImpl(logCallback);
|
||||
gWebRTCImpl->init();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -273,6 +273,11 @@ void LLWebRTCVoiceClient::cleanupSingleton()
|
|||
void LLWebRTCVoiceClient::init(LLPumpIO* pump)
|
||||
{
|
||||
// constructor will set up LLVoiceClient::getInstance()
|
||||
initWebRTC();
|
||||
}
|
||||
|
||||
void LLWebRTCVoiceClient::initWebRTC()
|
||||
{
|
||||
llwebrtc::init(this);
|
||||
|
||||
mWebRTCDeviceInterface = llwebrtc::getDeviceInterface();
|
||||
|
|
@ -292,6 +297,7 @@ void LLWebRTCVoiceClient::terminate()
|
|||
|
||||
mVoiceEnabled = false;
|
||||
llwebrtc::terminate();
|
||||
mWebRTCDeviceInterface = nullptr;
|
||||
|
||||
sShuttingDown = true;
|
||||
}
|
||||
|
|
@ -1805,6 +1811,15 @@ void LLWebRTCVoiceClient::onChangeDetailed(const LLMute& mute)
|
|||
}
|
||||
}
|
||||
|
||||
void LLWebRTCVoiceClient::userAuthorized(const std::string& user_id, const LLUUID& agentID)
|
||||
{
|
||||
if (sShuttingDown)
|
||||
{
|
||||
sShuttingDown = false; // was terminated, restart
|
||||
initWebRTC();
|
||||
}
|
||||
}
|
||||
|
||||
void LLWebRTCVoiceClient::predSetUserMute(const LLWebRTCVoiceClient::sessionStatePtr_t &session, const LLUUID &id, bool mute)
|
||||
{
|
||||
session->setUserMute(id, mute);
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ public:
|
|||
//@}
|
||||
|
||||
// authorize the user
|
||||
void userAuthorized(const std::string &user_id, const LLUUID &agentID) override {};
|
||||
void userAuthorized(const std::string &user_id, const LLUUID &agentID) override;
|
||||
|
||||
|
||||
void OnConnectionEstablished(const std::string& channelID, const LLUUID& regionID);
|
||||
|
|
@ -443,6 +443,8 @@ public:
|
|||
boost::signals2::connection mAvatarNameCacheConnection;
|
||||
|
||||
private:
|
||||
// init or restart the WebRTC device interface.
|
||||
void initWebRTC();
|
||||
|
||||
// Coroutine support methods
|
||||
//---
|
||||
|
|
|
|||
Loading…
Reference in New Issue