Callback button for groups was not being reenabled after hanging up on group call.

For #2532, callback button was remaining disabled after hanging up on a group call.

Also, fix an issue where user was automatically added to a group call after the
initiator of the group call hangs up and re-calls the group.
master
Roxie Linden 2024-09-09 11:52:16 -07:00
parent 33116ea35e
commit 9d8376071a
2 changed files with 13 additions and 10 deletions

View File

@ -450,7 +450,8 @@ void LLFloaterIMSessionTab::enableDisableCallBtn()
else
{
// We allow to start call from this state only
if (mSession->mVoiceChannel->getState() == LLVoiceChannel::STATE_NO_CHANNEL_INFO &&
if (mSession->mVoiceChannel &&
!mSession->mVoiceChannel->callStarted() &&
LLVoiceClient::instanceExists())
{
LLVoiceClient* client = LLVoiceClient::getInstance();
@ -494,10 +495,7 @@ void LLFloaterIMSessionTab::onCallButtonClicked()
}
else
{
LLVoiceChannel::EState channel_state = mSession && mSession->mVoiceChannel ?
mSession->mVoiceChannel->getState() : LLVoiceChannel::STATE_NO_CHANNEL_INFO;
// We allow to start call from this state only
if (channel_state == LLVoiceChannel::STATE_NO_CHANNEL_INFO)
if (mSession->mVoiceChannel && !mSession->mVoiceChannel->callStarted())
{
gIMMgr->startCall(mSessionID);
}

View File

@ -390,11 +390,11 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
}
else
{
LLAvatarNameCache::get(participant_id, boost::bind(&on_avatar_name_cache_toast, _1, _2, msg));
LLAvatarNameCache::get(participant_id, boost::bind(&on_avatar_name_cache_toast, _1, _2, msg));
}
}
}
}
}
}
if (store_dnd_message)
{
// If in DND mode, allow notification to be stored so upon DND exit
@ -4178,11 +4178,16 @@ public:
}
if (input["body"]["info"].has("voice_channel_info"))
{
// new voice channel info incoming, update and re-activate call
// if currently in a call.
LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(session_id);
if (session)
{
session->initVoiceChannel(input["body"]["info"]["voice_channel_info"]);
session->mVoiceChannel->activate();
if (session->mVoiceChannel && session->mVoiceChannel->callStarted())
{
session->initVoiceChannel(input["body"]["info"]["voice_channel_info"]);
session->mVoiceChannel->activate();
}
}
}
}