summaryrefslogtreecommitdiff
path: root/indra/newview/llvoicechannel.cpp
diff options
context:
space:
mode:
authorRoxie Linden <roxie@lindenlab.com>2024-05-20 12:59:59 -0700
committerRoxie Linden <roxie@lindenlab.com>2024-05-20 12:59:59 -0700
commit3a212d9608492ae64a3a32f80790371b90be9e9e (patch)
treefcb3901b838af753e40c2ddd1ce84b95a6c2f603 /indra/newview/llvoicechannel.cpp
parentc7461061b8113fa258611b1a31f16a119fad1a2c (diff)
parente1623bb276f83a43ce7a197e388720c05bdefe61 (diff)
Merge branch 'spaces-merge' into roxie/webrtc-voice
Diffstat (limited to 'indra/newview/llvoicechannel.cpp')
-rw-r--r--indra/newview/llvoicechannel.cpp1374
1 files changed, 687 insertions, 687 deletions
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index f9d4a7e222..f6556b7128 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -1,25 +1,25 @@
-/**
+/**
* @file llvoicechannel.cpp
* @brief Voice Channel related classes
*
* $LicenseInfo:firstyear=2001&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
- *
+ *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
- *
+ *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
+ *
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
@@ -53,331 +53,331 @@ const U32 DEFAULT_RETRIES_COUNT = 3;
//
// LLVoiceChannel
//
-LLVoiceChannel::LLVoiceChannel(const LLUUID& session_id, const std::string& session_name) :
- mSessionID(session_id),
- mState(STATE_NO_CHANNEL_INFO),
- mSessionName(session_name),
- mCallDirection(OUTGOING_CALL),
- mIgnoreNextSessionLeave(FALSE),
- mCallEndedByAgent(false)
+LLVoiceChannel::LLVoiceChannel(const LLUUID& session_id, const std::string& session_name) :
+ mSessionID(session_id),
+ mState(STATE_NO_CHANNEL_INFO),
+ mSessionName(session_name),
+ mCallDirection(OUTGOING_CALL),
+ mIgnoreNextSessionLeave(FALSE),
+ mCallEndedByAgent(false)
{
- mNotifyArgs["VOICE_CHANNEL_NAME"] = mSessionName;
+ mNotifyArgs["VOICE_CHANNEL_NAME"] = mSessionName;
- if (!sVoiceChannelMap.insert(std::make_pair(session_id, this)).second)
- {
- // a voice channel already exists for this session id, so this instance will be orphaned
- // the end result should simply be the failure to make voice calls
- LL_WARNS("Voice") << "Duplicate voice channels registered for session_id " << session_id << LL_ENDL;
- }
+ if (!sVoiceChannelMap.insert(std::make_pair(session_id, this)).second)
+ {
+ // a voice channel already exists for this session id, so this instance will be orphaned
+ // the end result should simply be the failure to make voice calls
+ LL_WARNS("Voice") << "Duplicate voice channels registered for session_id " << session_id << LL_ENDL;
+ }
}
LLVoiceChannel::~LLVoiceChannel()
{
- if (sSuspendedVoiceChannel == this)
- {
- sSuspendedVoiceChannel = NULL;
- }
- if (sCurrentVoiceChannel == this)
- {
- sCurrentVoiceChannel = NULL;
- // Must check instance exists here, the singleton MAY have already been destroyed.
- if(LLVoiceClient::instanceExists())
- {
- LLVoiceClient::getInstance()->removeObserver(this);
- }
- }
-
- sVoiceChannelMap.erase(mSessionID);
+ if (sSuspendedVoiceChannel == this)
+ {
+ sSuspendedVoiceChannel = NULL;
+ }
+ if (sCurrentVoiceChannel == this)
+ {
+ sCurrentVoiceChannel = NULL;
+ // Must check instance exists here, the singleton MAY have already been destroyed.
+ if(LLVoiceClient::instanceExists())
+ {
+ LLVoiceClient::getInstance()->removeObserver(this);
+ }
+ }
+
+ sVoiceChannelMap.erase(mSessionID);
}
void LLVoiceChannel::setChannelInfo(const LLSD &channelInfo)
{
- mChannelInfo = channelInfo;
-
- if (mState == STATE_NO_CHANNEL_INFO)
- {
- if (mChannelInfo.isUndefined())
- {
- LLNotificationsUtil::add("VoiceChannelJoinFailed", mNotifyArgs);
- LL_WARNS("Voice") << "Received empty channel info for channel " << mSessionName << LL_ENDL;
- deactivate();
- }
- else
- {
- setState(STATE_READY);
-
- // if we are supposed to be active, reconnect
- // this will happen on initial connect, as we request credentials on first use
- if (sCurrentVoiceChannel == this)
- {
- // just in case we got new channel info while active
- // should move over to new channel
- activate();
- }
- }
- }
+ mChannelInfo = channelInfo;
+
+ if (mState == STATE_NO_CHANNEL_INFO)
+ {
+ if (mChannelInfo.isUndefined())
+ {
+ LLNotificationsUtil::add("VoiceChannelJoinFailed", mNotifyArgs);
+ LL_WARNS("Voice") << "Received empty channel info for channel " << mSessionName << LL_ENDL;
+ deactivate();
+ }
+ else
+ {
+ setState(STATE_READY);
+
+ // if we are supposed to be active, reconnect
+ // this will happen on initial connect, as we request credentials on first use
+ if (sCurrentVoiceChannel == this)
+ {
+ // just in case we got new channel info while active
+ // should move over to new channel
+ activate();
+ }
+ }
+ }
}
void LLVoiceChannel::onChange(EStatusType type, const LLSD& channelInfo, bool proximal)
{
- LL_DEBUGS("Voice") << "Incoming channel info: " << channelInfo << LL_ENDL;
- LL_DEBUGS("Voice") << "Current channel info: " << mChannelInfo << LL_ENDL;
- if (mChannelInfo.isUndefined())
- {
- mChannelInfo = channelInfo;
- }
- if (!LLVoiceClient::getInstance()->compareChannels(mChannelInfo, channelInfo))
- {
- return;
- }
-
- if (type < BEGIN_ERROR_STATUS)
- {
- handleStatusChange(type);
- }
- else
- {
- handleError(type);
- }
+ LL_DEBUGS("Voice") << "Incoming channel info: " << channelInfo << LL_ENDL;
+ LL_DEBUGS("Voice") << "Current channel info: " << mChannelInfo << LL_ENDL;
+ if (mChannelInfo.isUndefined())
+ {
+ mChannelInfo = channelInfo;
+ }
+ if (!LLVoiceClient::getInstance()->compareChannels(mChannelInfo, channelInfo))
+ {
+ return;
+ }
+
+ if (type < BEGIN_ERROR_STATUS)
+ {
+ handleStatusChange(type);
+ }
+ else
+ {
+ handleError(type);
+ }
}
void LLVoiceChannel::handleStatusChange(EStatusType type)
{
- // status updates
- switch(type)
- {
- case STATUS_LOGIN_RETRY:
- // no user notice
- break;
- case STATUS_LOGGED_IN:
- break;
- case STATUS_LEFT_CHANNEL:
- if (callStarted() && !sSuspended)
- {
- // if forceably removed from channel
- // update the UI and revert to default channel
- // deactivate will set the State to STATE_HUNG_UP
- // so when handleStatusChange is called again during
- // shutdown callStarted will return false and deactivate
- // won't be called again.
- deactivate();
- }
- break;
- case STATUS_JOINING:
- if (callStarted())
- {
- setState(STATE_RINGING);
- }
- break;
- case STATUS_JOINED:
- if (callStarted())
- {
- setState(STATE_CONNECTED);
- }
- default:
- break;
- }
+ // status updates
+ switch(type)
+ {
+ case STATUS_LOGIN_RETRY:
+ // no user notice
+ break;
+ case STATUS_LOGGED_IN:
+ break;
+ case STATUS_LEFT_CHANNEL:
+ if (callStarted() && !sSuspended)
+ {
+ // if forceably removed from channel
+ // update the UI and revert to default channel
+ // deactivate will set the State to STATE_HUNG_UP
+ // so when handleStatusChange is called again during
+ // shutdown callStarted will return false and deactivate
+ // won't be called again.
+ deactivate();
+ }
+ break;
+ case STATUS_JOINING:
+ if (callStarted())
+ {
+ setState(STATE_RINGING);
+ }
+ break;
+ case STATUS_JOINED:
+ if (callStarted())
+ {
+ setState(STATE_CONNECTED);
+ }
+ default:
+ break;
+ }
}
// default behavior is to just deactivate channel
// derived classes provide specific error messages
void LLVoiceChannel::handleError(EStatusType type)
{
- deactivate();
- setState(STATE_ERROR);
+ deactivate();
+ setState(STATE_ERROR);
}
BOOL LLVoiceChannel::isActive()
-{
- // only considered active when currently bound channel matches what our channel
- return callStarted() && LLVoiceClient::getInstance()->isCurrentChannel(mChannelInfo);
+{
+ // only considered active when currently bound channel matches what our channel
+ return callStarted() && LLVoiceClient::getInstance()->isCurrentChannel(mChannelInfo);
}
BOOL LLVoiceChannel::callStarted()
{
- return mState >= STATE_CALL_STARTED;
+ return mState >= STATE_CALL_STARTED;
}
void LLVoiceChannel::deactivate()
{
- if (mState >= STATE_RINGING)
- {
- // ignore session leave event
- mIgnoreNextSessionLeave = TRUE;
- }
-
- if (callStarted())
- {
- setState(STATE_HUNG_UP);
-
- //Default mic is OFF when leaving voice calls
- if (gSavedSettings.getBOOL("AutoDisengageMic") &&
- sCurrentVoiceChannel == this &&
- LLVoiceClient::getInstance()->getUserPTTState())
- {
- gSavedSettings.setBOOL("PTTCurrentlyEnabled", true);
- LLVoiceClient::getInstance()->setUserPTTState(false);
- }
- }
- LLVoiceClient::getInstance()->removeObserver(this);
-
- if (sCurrentVoiceChannel == this)
- {
- // default channel is proximal channel
- sCurrentVoiceChannel = LLVoiceChannelProximal::getInstance();
- sCurrentVoiceChannel->activate();
- }
+ if (mState >= STATE_RINGING)
+ {
+ // ignore session leave event
+ mIgnoreNextSessionLeave = TRUE;
+ }
+
+ if (callStarted())
+ {
+ setState(STATE_HUNG_UP);
+
+ //Default mic is OFF when leaving voice calls
+ if (gSavedSettings.getBOOL("AutoDisengageMic") &&
+ sCurrentVoiceChannel == this &&
+ LLVoiceClient::getInstance()->getUserPTTState())
+ {
+ gSavedSettings.setBOOL("PTTCurrentlyEnabled", true);
+ LLVoiceClient::getInstance()->setUserPTTState(false);
+ }
+ }
+ LLVoiceClient::getInstance()->removeObserver(this);
+
+ if (sCurrentVoiceChannel == this)
+ {
+ // default channel is proximal channel
+ sCurrentVoiceChannel = LLVoiceChannelProximal::getInstance();
+ sCurrentVoiceChannel->activate();
+ }
}
void LLVoiceChannel::activate()
{
- if (callStarted())
- {
- return;
- }
-
- // deactivate old channel and mark ourselves as the active one
- if (sCurrentVoiceChannel != this)
- {
- // mark as current before deactivating the old channel to prevent
- // activating the proximal channel between IM calls
- LLVoiceChannel* old_channel = sCurrentVoiceChannel;
- sCurrentVoiceChannel = this;
- if (old_channel)
- {
- old_channel->deactivate();
- }
- }
-
- if (mState == STATE_NO_CHANNEL_INFO)
- {
- // responsible for setting status to active
- requestChannelInfo();
- }
- else
- {
- setState(STATE_CALL_STARTED);
- }
-
- LLVoiceClient::getInstance()->addObserver(this);
-
- //do not send earlier, channel should be initialized, should not be in STATE_NO_CHANNEL_INFO state
- sCurrentVoiceChannelChangedSignal(this->mSessionID);
+ if (callStarted())
+ {
+ return;
+ }
+
+ // deactivate old channel and mark ourselves as the active one
+ if (sCurrentVoiceChannel != this)
+ {
+ // mark as current before deactivating the old channel to prevent
+ // activating the proximal channel between IM calls
+ LLVoiceChannel* old_channel = sCurrentVoiceChannel;
+ sCurrentVoiceChannel = this;
+ if (old_channel)
+ {
+ old_channel->deactivate();
+ }
+ }
+
+ if (mState == STATE_NO_CHANNEL_INFO)
+ {
+ // responsible for setting status to active
+ requestChannelInfo();
+ }
+ else
+ {
+ setState(STATE_CALL_STARTED);
+ }
+
+ LLVoiceClient::getInstance()->addObserver(this);
+
+ //do not send earlier, channel should be initialized, should not be in STATE_NO_CHANNEL_INFO state
+ sCurrentVoiceChannelChangedSignal(this->mSessionID);
}
void LLVoiceChannel::requestChannelInfo()
{
- // pretend we have everything we need
- if (sCurrentVoiceChannel == this)
- {
- setState(STATE_CALL_STARTED);
- }
+ // pretend we have everything we need
+ if (sCurrentVoiceChannel == this)
+ {
+ setState(STATE_CALL_STARTED);
+ }
}
-//static
+//static
LLVoiceChannel* LLVoiceChannel::getChannelByID(const LLUUID& session_id)
{
- voice_channel_map_t::iterator found_it = sVoiceChannelMap.find(session_id);
- if (found_it == sVoiceChannelMap.end())
- {
- return NULL;
- }
- else
- {
- return found_it->second;
- }
+ voice_channel_map_t::iterator found_it = sVoiceChannelMap.find(session_id);
+ if (found_it == sVoiceChannelMap.end())
+ {
+ return NULL;
+ }
+ else
+ {
+ return found_it->second;
+ }
}
LLVoiceChannel* LLVoiceChannel::getCurrentVoiceChannel()
{
- return sCurrentVoiceChannel;
+ return sCurrentVoiceChannel;
}
void LLVoiceChannel::updateSessionID(const LLUUID& new_session_id)
{
- sVoiceChannelMap.erase(sVoiceChannelMap.find(mSessionID));
- mSessionID = new_session_id;
- sVoiceChannelMap.insert(std::make_pair(mSessionID, this));
+ sVoiceChannelMap.erase(sVoiceChannelMap.find(mSessionID));
+ mSessionID = new_session_id;
+ sVoiceChannelMap.insert(std::make_pair(mSessionID, this));
}
void LLVoiceChannel::setState(EState state)
{
- switch(state)
- {
- case STATE_RINGING:
- //TODO: remove or redirect this call status notification
-// LLCallInfoDialog::show("ringing", mNotifyArgs);
- break;
- case STATE_CONNECTED:
- //TODO: remove or redirect this call status notification
-// LLCallInfoDialog::show("connected", mNotifyArgs);
- break;
- case STATE_HUNG_UP:
- //TODO: remove or redirect this call status notification
-// LLCallInfoDialog::show("hang_up", mNotifyArgs);
- break;
- default:
- break;
- }
-
- doSetState(state);
+ switch(state)
+ {
+ case STATE_RINGING:
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("ringing", mNotifyArgs);
+ break;
+ case STATE_CONNECTED:
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("connected", mNotifyArgs);
+ break;
+ case STATE_HUNG_UP:
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("hang_up", mNotifyArgs);
+ break;
+ default:
+ break;
+ }
+
+ doSetState(state);
}
void LLVoiceChannel::doSetState(const EState& new_state)
{
- EState old_state = mState;
- mState = new_state;
+ EState old_state = mState;
+ mState = new_state;
- if (!mStateChangedCallback.empty())
- mStateChangedCallback(old_state, mState, mCallDirection, mCallEndedByAgent, mSessionID);
+ if (!mStateChangedCallback.empty())
+ mStateChangedCallback(old_state, mState, mCallDirection, mCallEndedByAgent, mSessionID);
}
//static
void LLVoiceChannel::initClass()
{
- sCurrentVoiceChannel = LLVoiceChannelProximal::getInstance();
+ sCurrentVoiceChannel = LLVoiceChannelProximal::getInstance();
}
-//static
+//static
void LLVoiceChannel::suspend()
{
- if (!sSuspended)
- {
- sSuspendedVoiceChannel = sCurrentVoiceChannel;
- sSuspended = TRUE;
- }
+ if (!sSuspended)
+ {
+ sSuspendedVoiceChannel = sCurrentVoiceChannel;
+ sSuspended = TRUE;
+ }
}
-//static
+//static
void LLVoiceChannel::resume()
{
- if (sSuspended)
- {
- if (LLVoiceClient::getInstance()->voiceEnabled())
- {
- if (sSuspendedVoiceChannel)
- {
- sSuspendedVoiceChannel->activate();
- }
- else
- {
- LLVoiceChannelProximal::getInstance()->activate();
- }
- }
- sSuspended = FALSE;
- }
+ if (sSuspended)
+ {
+ if (LLVoiceClient::getInstance()->voiceEnabled())
+ {
+ if (sSuspendedVoiceChannel)
+ {
+ sSuspendedVoiceChannel->activate();
+ }
+ else
+ {
+ LLVoiceChannelProximal::getInstance()->activate();
+ }
+ }
+ sSuspended = FALSE;
+ }
}
boost::signals2::connection LLVoiceChannel::setCurrentVoiceChannelChangedCallback(channel_changed_callback_t cb, bool at_front)
{
- if (at_front)
- {
- return sCurrentVoiceChannelChangedSignal.connect(cb, boost::signals2::at_front);
- }
- else
- {
- return sCurrentVoiceChannelChangedSignal.connect(cb);
- }
+ if (at_front)
+ {
+ return sCurrentVoiceChannelChangedSignal.connect(cb, boost::signals2::at_front);
+ }
+ else
+ {
+ return sCurrentVoiceChannelChangedSignal.connect(cb);
+ }
}
//
@@ -385,374 +385,374 @@ boost::signals2::connection LLVoiceChannel::setCurrentVoiceChannelChangedCallbac
//
LLVoiceChannelGroup::LLVoiceChannelGroup(const LLUUID &session_id,
- const std::string &session_name,
- bool is_p2p) :
- LLVoiceChannel(session_id, session_name),
- mIsP2P(is_p2p)
+ const std::string &session_name,
+ bool is_p2p) :
+ LLVoiceChannel(session_id, session_name),
+ mIsP2P(is_p2p)
{
- mRetries = DEFAULT_RETRIES_COUNT;
- mIsRetrying = FALSE;
+ mRetries = DEFAULT_RETRIES_COUNT;
+ mIsRetrying = FALSE;
}
void LLVoiceChannelGroup::deactivate()
{
- if (callStarted())
- {
- LLVoiceClient::getInstance()->leaveNonSpatialChannel();
- }
- LLVoiceChannel::deactivate();
-
- if (mIsP2P)
- {
- // void the channel info for p2p adhoc channels
- // so we request it again, hence throwing up the
- // connect dialogue on the other side.
- setState(STATE_NO_CHANNEL_INFO);
- }
+ if (callStarted())
+ {
+ LLVoiceClient::getInstance()->leaveNonSpatialChannel();
+ }
+ LLVoiceChannel::deactivate();
+
+ if (mIsP2P)
+ {
+ // void the channel info for p2p adhoc channels
+ // so we request it again, hence throwing up the
+ // connect dialogue on the other side.
+ setState(STATE_NO_CHANNEL_INFO);
+ }
}
void LLVoiceChannelGroup::activate()
{
- if (callStarted()) return;
-
- LLVoiceChannel::activate();
-
- if (callStarted())
- {
- // we have the channel info, just need to use it now
- LLVoiceClient::getInstance()->setNonSpatialChannel(mChannelInfo,
- mIsP2P && (mCallDirection == OUTGOING_CALL),
- mIsP2P);
-
- if (mIsP2P)
- {
- LLIMModel::addSpeakersToRecent(mSessionID);
- }
- else
- {
- if (!gAgent.isInGroup(mSessionID)) // ad-hoc channel
- {
- LLIMModel::LLIMSession *session = LLIMModel::getInstance()->findIMSession(mSessionID);
- // Adding ad-hoc call participants to Recent People List.
- // If it's an outgoing ad-hoc, we can use mInitialTargetIDs that holds IDs of people we
- // called(both online and offline) as source to get people for recent (STORM-210).
- if (session && session->isOutgoingAdHoc())
- {
- for (uuid_vec_t::iterator it = session->mInitialTargetIDs.begin(); it != session->mInitialTargetIDs.end(); ++it)
- {
- const LLUUID id = *it;
- LLRecentPeople::instance().add(id);
- }
- }
- // If this ad-hoc is incoming then trying to get ids of people from mInitialTargetIDs
- // would lead to EXT-8246. So in this case we get them from speakers list.
- else
- {
- LLIMModel::addSpeakersToRecent(mSessionID);
- }
- }
- }
-
- // Mic default state is OFF on initiating/joining Ad-Hoc/Group calls. It's on for P2P using the AdHoc infra.
-
- LLVoiceClient::getInstance()->setUserPTTState(mIsP2P);
- }
+ if (callStarted()) return;
+
+ LLVoiceChannel::activate();
+
+ if (callStarted())
+ {
+ // we have the channel info, just need to use it now
+ LLVoiceClient::getInstance()->setNonSpatialChannel(mChannelInfo,
+ mIsP2P && (mCallDirection == OUTGOING_CALL),
+ mIsP2P);
+
+ if (mIsP2P)
+ {
+ LLIMModel::addSpeakersToRecent(mSessionID);
+ }
+ else
+ {
+ if (!gAgent.isInGroup(mSessionID)) // ad-hoc channel
+ {
+ LLIMModel::LLIMSession *session = LLIMModel::getInstance()->findIMSession(mSessionID);
+ // Adding ad-hoc call participants to Recent People List.
+ // If it's an outgoing ad-hoc, we can use mInitialTargetIDs that holds IDs of people we
+ // called(both online and offline) as source to get people for recent (STORM-210).
+ if (session && session->isOutgoingAdHoc())
+ {
+ for (uuid_vec_t::iterator it = session->mInitialTargetIDs.begin(); it != session->mInitialTargetIDs.end(); ++it)
+ {
+ const LLUUID id = *it;
+ LLRecentPeople::instance().add(id);
+ }
+ }
+ // If this ad-hoc is incoming then trying to get ids of people from mInitialTargetIDs
+ // would lead to EXT-8246. So in this case we get them from speakers list.
+ else
+ {
+ LLIMModel::addSpeakersToRecent(mSessionID);
+ }
+ }
+ }
+
+ // Mic default state is OFF on initiating/joining Ad-Hoc/Group calls. It's on for P2P using the AdHoc infra.
+
+ LLVoiceClient::getInstance()->setUserPTTState(mIsP2P);
+ }
}
void LLVoiceChannelGroup::requestChannelInfo()
{
- LLViewerRegion* region = gAgent.getRegion();
- if (region)
- {
- std::string url = region->getCapability("ChatSessionRequest");
+ LLViewerRegion* region = gAgent.getRegion();
+ if (region)
+ {
+ std::string url = region->getCapability("ChatSessionRequest");
- LLCoros::instance().launch("LLVoiceChannelGroup::voiceCallCapCoro",
- boost::bind(&LLVoiceChannelGroup::voiceCallCapCoro, this, url));
- }
+ LLCoros::instance().launch("LLVoiceChannelGroup::voiceCallCapCoro",
+ boost::bind(&LLVoiceChannelGroup::voiceCallCapCoro, this, url));
+ }
}
void LLVoiceChannelGroup::setChannelInfo(const LLSD& channelInfo)
{
- mChannelInfo = channelInfo;
-
- if (mState == STATE_NO_CHANNEL_INFO)
- {
- if(!mChannelInfo.isUndefined())
- {
- setState(STATE_READY);
-
- // if we are supposed to be active, reconnect
- // this will happen on initial connect, as we request credentials on first use
- if (sCurrentVoiceChannel == this)
- {
- // just in case we got new channel info while active
- // should move over to new channel
- activate();
- }
- }
- else
- {
- //*TODO: notify user
- LL_WARNS("Voice") << "Received invalid credentials for channel " << mSessionName << LL_ENDL;
- deactivate();
- }
- }
- else if ( mIsRetrying )
- {
- // we have the channel info, just need to use it now
- LLVoiceClient::getInstance()->setNonSpatialChannel(channelInfo,
- mCallDirection == OUTGOING_CALL,
- mIsP2P);
- }
+ mChannelInfo = channelInfo;
+
+ if (mState == STATE_NO_CHANNEL_INFO)
+ {
+ if(!mChannelInfo.isUndefined())
+ {
+ setState(STATE_READY);
+
+ // if we are supposed to be active, reconnect
+ // this will happen on initial connect, as we request credentials on first use
+ if (sCurrentVoiceChannel == this)
+ {
+ // just in case we got new channel info while active
+ // should move over to new channel
+ activate();
+ }
+ }
+ else
+ {
+ //*TODO: notify user
+ LL_WARNS("Voice") << "Received invalid credentials for channel " << mSessionName << LL_ENDL;
+ deactivate();
+ }
+ }
+ else if ( mIsRetrying )
+ {
+ // we have the channel info, just need to use it now
+ LLVoiceClient::getInstance()->setNonSpatialChannel(channelInfo,
+ mCallDirection == OUTGOING_CALL,
+ mIsP2P);
+ }
}
void LLVoiceChannelGroup::handleStatusChange(EStatusType type)
{
- // status updates
- switch(type)
- {
- case STATUS_JOINED:
- mRetries = 3;
- mIsRetrying = FALSE;
- default:
- break;
- }
+ // status updates
+ switch(type)
+ {
+ case STATUS_JOINED:
+ mRetries = 3;
+ mIsRetrying = FALSE;
+ default:
+ break;
+ }
- LLVoiceChannel::handleStatusChange(type);
+ LLVoiceChannel::handleStatusChange(type);
}
void LLVoiceChannelGroup::handleError(EStatusType status)
{
- std::string notify;
- switch(status)
- {
- case ERROR_CHANNEL_LOCKED:
- case ERROR_CHANNEL_FULL:
- notify = "VoiceChannelFull";
- break;
- case ERROR_NOT_AVAILABLE:
- //clear URI and credentials
- //set the state to be no info
- //and activate
- if ( mRetries > 0 )
- {
- mRetries--;
- mIsRetrying = TRUE;
- mIgnoreNextSessionLeave = TRUE;
-
- requestChannelInfo();
- return;
- }
- else
- {
- notify = "VoiceChannelJoinFailed";
- mRetries = DEFAULT_RETRIES_COUNT;
- mIsRetrying = FALSE;
- }
-
- break;
-
- case ERROR_UNKNOWN:
- default:
- break;
- }
-
- // notification
- if (!notify.empty())
- {
- LLNotificationPtr notification = LLNotificationsUtil::add(notify, mNotifyArgs);
- // echo to im window
- gIMMgr->addMessage(mSessionID, LLUUID::null, SYSTEM_FROM, notification->getMessage());
- }
-
- LLVoiceChannel::handleError(status);
+ std::string notify;
+ switch(status)
+ {
+ case ERROR_CHANNEL_LOCKED:
+ case ERROR_CHANNEL_FULL:
+ notify = "VoiceChannelFull";
+ break;
+ case ERROR_NOT_AVAILABLE:
+ //clear URI and credentials
+ //set the state to be no info
+ //and activate
+ if ( mRetries > 0 )
+ {
+ mRetries--;
+ mIsRetrying = TRUE;
+ mIgnoreNextSessionLeave = TRUE;
+
+ requestChannelInfo();
+ return;
+ }
+ else
+ {
+ notify = "VoiceChannelJoinFailed";
+ mRetries = DEFAULT_RETRIES_COUNT;
+ mIsRetrying = FALSE;
+ }
+
+ break;
+
+ case ERROR_UNKNOWN:
+ default:
+ break;
+ }
+
+ // notification
+ if (!notify.empty())
+ {
+ LLNotificationPtr notification = LLNotificationsUtil::add(notify, mNotifyArgs);
+ // echo to im window
+ gIMMgr->addMessage(mSessionID, LLUUID::null, SYSTEM_FROM, notification->getMessage());
+ }
+
+ LLVoiceChannel::handleError(status);
}
void LLVoiceChannelGroup::setState(EState state)
{
- switch(state)
- {
- case STATE_RINGING:
- if ( !mIsRetrying )
- {
- //TODO: remove or redirect this call status notification
-// LLCallInfoDialog::show("ringing", mNotifyArgs);
- }
+ switch(state)
+ {
+ case STATE_RINGING:
+ if ( !mIsRetrying )
+ {
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("ringing", mNotifyArgs);
+ }
- doSetState(state);
- break;
- default:
- LLVoiceChannel::setState(state);
- }
+ doSetState(state);
+ break;
+ default:
+ LLVoiceChannel::setState(state);
+ }
}
void LLVoiceChannelGroup::voiceCallCapCoro(std::string url)
{
- LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);
- LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t
- httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("voiceCallCapCoro", httpPolicy));
- LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
-
- LLSD postData;
- postData["method"] = "call";
- postData["session-id"] = mSessionID;
- LLSD altParams;
- std::string preferred_voice_server_type = gSavedSettings.getString("VoiceServerType");
- if (preferred_voice_server_type.empty())
- {
- // default to the server type associated with the region we're on.
- LLVoiceVersionInfo versionInfo = LLVoiceClient::getInstance()->getVersion();
- preferred_voice_server_type = versionInfo.internalVoiceServerType;
- }
- altParams["preferred_voice_server_type"] = preferred_voice_server_type;
- postData["alt_params"] = altParams;
-
- LL_INFOS("Voice", "voiceCallCapCoro") << "Generic POST for " << url << LL_ENDL;
-
- LLSD result = httpAdapter->postAndSuspend(httpRequest, url, postData);
-
- LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
- LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
-
- LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(mSessionID);
- if (!channelp)
- {
- LL_WARNS("Voice") << "Unable to retrieve channel with Id = " << mSessionID << LL_ENDL;
- return;
- }
-
- if (!status)
- {
- if (status == LLCore::HttpStatus(HTTP_FORBIDDEN))
- {
- //403 == no ability
- LLNotificationsUtil::add(
- "VoiceNotAllowed",
- channelp->getNotifyArgs());
- }
- else
- {
- LLNotificationsUtil::add(
- "VoiceCallGenericError",
- channelp->getNotifyArgs());
- }
- channelp->deactivate();
- return;
- }
-
- result.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS);
-
- LLSD::map_const_iterator iter;
- for (iter = result.beginMap(); iter != result.endMap(); ++iter)
- {
- LL_DEBUGS("Voice") << "LLVoiceChannelGroup::voiceCallCapCoro got "
- << iter->first << LL_ENDL;
- }
- LL_INFOS("Voice") << "LLVoiceChannelGroup::voiceCallCapCoro got " << result << LL_ENDL;
-
- channelp->setChannelInfo(result["voice_credentials"]);
+ LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);
+ LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t
+ httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("voiceCallCapCoro", httpPolicy));
+ LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
+
+ LLSD postData;
+ postData["method"] = "call";
+ postData["session-id"] = mSessionID;
+ LLSD altParams;
+ std::string preferred_voice_server_type = gSavedSettings.getString("VoiceServerType");
+ if (preferred_voice_server_type.empty())
+ {
+ // default to the server type associated with the region we're on.
+ LLVoiceVersionInfo versionInfo = LLVoiceClient::getInstance()->getVersion();
+ preferred_voice_server_type = versionInfo.internalVoiceServerType;
+ }
+ altParams["preferred_voice_server_type"] = preferred_voice_server_type;
+ postData["alt_params"] = altParams;
+
+ LL_INFOS("Voice", "voiceCallCapCoro") << "Generic POST for " << url << LL_ENDL;
+
+ LLSD result = httpAdapter->postAndSuspend(httpRequest, url, postData);
+
+ LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
+ LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
+
+ LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(mSessionID);
+ if (!channelp)
+ {
+ LL_WARNS("Voice") << "Unable to retrieve channel with Id = " << mSessionID << LL_ENDL;
+ return;
+ }
+
+ if (!status)
+ {
+ if (status == LLCore::HttpStatus(HTTP_FORBIDDEN))
+ {
+ //403 == no ability
+ LLNotificationsUtil::add(
+ "VoiceNotAllowed",
+ channelp->getNotifyArgs());
+ }
+ else
+ {
+ LLNotificationsUtil::add(
+ "VoiceCallGenericError",
+ channelp->getNotifyArgs());
+ }
+ channelp->deactivate();
+ return;
+ }
+
+ result.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS);
+
+ LLSD::map_const_iterator iter;
+ for (iter = result.beginMap(); iter != result.endMap(); ++iter)
+ {
+ LL_DEBUGS("Voice") << "LLVoiceChannelGroup::voiceCallCapCoro got "
+ << iter->first << LL_ENDL;
+ }
+ LL_INFOS("Voice") << "LLVoiceChannelGroup::voiceCallCapCoro got " << result << LL_ENDL;
+
+ channelp->setChannelInfo(result["voice_credentials"]);
}
//
// LLVoiceChannelProximal
//
-LLVoiceChannelProximal::LLVoiceChannelProximal() :
- LLVoiceChannel(LLUUID::null, LLStringUtil::null)
+LLVoiceChannelProximal::LLVoiceChannelProximal() :
+ LLVoiceChannel(LLUUID::null, LLStringUtil::null)
{
}
BOOL LLVoiceChannelProximal::isActive()
{
- return callStarted() && LLVoiceClient::getInstance()->inProximalChannel();
+ return callStarted() && LLVoiceClient::getInstance()->inProximalChannel();
}
void LLVoiceChannelProximal::activate()
{
- if (callStarted()) return;
+ if (callStarted()) return;
+
+ if((LLVoiceChannel::sCurrentVoiceChannel != this) && (LLVoiceChannel::getState() == STATE_CONNECTED))
+ {
+ // we're connected to a non-spatial channel, so disconnect.
+ LLVoiceClient::getInstance()->leaveNonSpatialChannel();
+ }
+ LLVoiceClient::getInstance()->activateSpatialChannel(true);
+ LLVoiceChannel::activate();
- if((LLVoiceChannel::sCurrentVoiceChannel != this) && (LLVoiceChannel::getState() == STATE_CONNECTED))
- {
- // we're connected to a non-spatial channel, so disconnect.
- LLVoiceClient::getInstance()->leaveNonSpatialChannel();
- }
- LLVoiceClient::getInstance()->activateSpatialChannel(true);
- LLVoiceChannel::activate();
-
}
void LLVoiceChannelProximal::onChange(EStatusType type, const LLSD& channelInfo, bool proximal)
{
- if (!proximal)
- {
- return;
- }
+ if (!proximal)
+ {
+ return;
+ }
- if (type < BEGIN_ERROR_STATUS)
- {
- handleStatusChange(type);
- }
- else
- {
- handleError(type);
- }
+ if (type < BEGIN_ERROR_STATUS)
+ {
+ handleStatusChange(type);
+ }
+ else
+ {
+ handleError(type);
+ }
}
void LLVoiceChannelProximal::handleStatusChange(EStatusType status)
{
- // status updates
- switch(status)
- {
- case STATUS_LEFT_CHANNEL:
- // do not notify user when leaving proximal channel
- return;
- case STATUS_VOICE_DISABLED:
- LLVoiceClient::getInstance()->setUserPTTState(false);
- gAgent.setVoiceConnected(false);
- //skip showing "Voice not available at your current location" when agent voice is disabled (EXT-4749)
- if(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking())
- {
- //TODO: remove or redirect this call status notification
-// LLCallInfoDialog::show("unavailable", mNotifyArgs);
- }
- return;
- default:
- break;
- }
- LLVoiceChannel::handleStatusChange(status);
+ // status updates
+ switch(status)
+ {
+ case STATUS_LEFT_CHANNEL:
+ // do not notify user when leaving proximal channel
+ return;
+ case STATUS_VOICE_DISABLED:
+ LLVoiceClient::getInstance()->setUserPTTState(false);
+ gAgent.setVoiceConnected(false);
+ //skip showing "Voice not available at your current location" when agent voice is disabled (EXT-4749)
+ if(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking())
+ {
+ //TODO: remove or redirect this call status notification
+// LLCallInfoDialog::show("unavailable", mNotifyArgs);
+ }
+ return;
+ default:
+ break;
+ }
+ LLVoiceChannel::handleStatusChange(status);
}
void LLVoiceChannelProximal::handleError(EStatusType status)
{
- std::string notify;
- switch(status)
- {
- case ERROR_CHANNEL_LOCKED:
- case ERROR_CHANNEL_FULL:
- notify = "ProximalVoiceChannelFull";
- break;
- default:
- break;
- }
+ std::string notify;
+ switch(status)
+ {
+ case ERROR_CHANNEL_LOCKED:
+ case ERROR_CHANNEL_FULL:
+ notify = "ProximalVoiceChannelFull";
+ break;
+ default:
+ break;
+ }
- // notification
- if (!notify.empty())
- {
- LLNotificationsUtil::add(notify, mNotifyArgs);
- }
+ // notification
+ if (!notify.empty())
+ {
+ LLNotificationsUtil::add(notify, mNotifyArgs);
+ }
- // proximal voice remains up and the provider will try to reconnect.
+ // proximal voice remains up and the provider will try to reconnect.
}
void LLVoiceChannelProximal::deactivate()
{
- if (callStarted())
- {
- setState(STATE_HUNG_UP);
- }
+ if (callStarted())
+ {
+ setState(STATE_HUNG_UP);
+ }
- LLVoiceClient::getInstance()->activateSpatialChannel(false);
+ LLVoiceClient::getInstance()->activateSpatialChannel(false);
}
@@ -760,184 +760,184 @@ void LLVoiceChannelProximal::deactivate()
// LLVoiceChannelP2P
//
LLVoiceChannelP2P::LLVoiceChannelP2P(const LLUUID &session_id,
- const std::string &session_name,
- const LLUUID &other_user_id,
- LLVoiceP2POutgoingCallInterface* outgoing_call_interface) :
- LLVoiceChannelGroup(session_id, session_name, true),
- mOtherUserID(other_user_id),
- mReceivedCall(FALSE),
- mOutgoingCallInterface(outgoing_call_interface)
+ const std::string &session_name,
+ const LLUUID &other_user_id,
+ LLVoiceP2POutgoingCallInterface* outgoing_call_interface) :
+ LLVoiceChannelGroup(session_id, session_name, true),
+ mOtherUserID(other_user_id),
+ mReceivedCall(FALSE),
+ mOutgoingCallInterface(outgoing_call_interface)
{
}
void LLVoiceChannelP2P::handleStatusChange(EStatusType type)
{
- LL_INFOS("Voice") << "P2P CALL CHANNEL STATUS CHANGE: incoming=" << int(mReceivedCall) << " newstatus=" << LLVoiceClientStatusObserver::status2string(type) << " (mState=" << mState << ")" << LL_ENDL;
-
- // status updates
- switch(type)
- {
- case STATUS_LEFT_CHANNEL:
- if (callStarted() && !mIgnoreNextSessionLeave && !sSuspended)
- {
- // *TODO: use it to show DECLINE voice notification
- if (mState == STATE_RINGING)
- {
- // other user declined call
- LLNotificationsUtil::add("P2PCallDeclined", mNotifyArgs);
- }
- else
- {
- // other user hung up, so we didn't end the call
- mCallEndedByAgent = false;
- }
- deactivate();
- }
- mIgnoreNextSessionLeave = FALSE;
- return;
- case STATUS_JOINING:
- // because we join session we expect to process session leave event in the future. EXT-7371
- // may be this should be done in the LLVoiceChannel::handleStatusChange.
- mIgnoreNextSessionLeave = FALSE;
- break;
-
- default:
- break;
- }
-
- LLVoiceChannel::handleStatusChange(type);
+ LL_INFOS("Voice") << "P2P CALL CHANNEL STATUS CHANGE: incoming=" << int(mReceivedCall) << " newstatus=" << LLVoiceClientStatusObserver::status2string(type) << " (mState=" << mState << ")" << LL_ENDL;
+
+ // status updates
+ switch(type)
+ {
+ case STATUS_LEFT_CHANNEL:
+ if (callStarted() && !mIgnoreNextSessionLeave && !sSuspended)
+ {
+ // *TODO: use it to show DECLINE voice notification
+ if (mState == STATE_RINGING)
+ {
+ // other user declined call
+ LLNotificationsUtil::add("P2PCallDeclined", mNotifyArgs);
+ }
+ else
+ {
+ // other user hung up, so we didn't end the call
+ mCallEndedByAgent = false;
+ }
+ deactivate();
+ }
+ mIgnoreNextSessionLeave = FALSE;
+ return;
+ case STATUS_JOINING:
+ // because we join session we expect to process session leave event in the future. EXT-7371
+ // may be this should be done in the LLVoiceChannel::handleStatusChange.
+ mIgnoreNextSessionLeave = FALSE;
+ break;
+
+ default:
+ break;
+ }
+
+ LLVoiceChannel::handleStatusChange(type);
}
void LLVoiceChannelP2P::handleError(EStatusType type)
{
- switch(type)
- {
- case ERROR_NOT_AVAILABLE:
- LLNotificationsUtil::add("P2PCallNoAnswer", mNotifyArgs);
- break;
- default:
- break;
- }
+ switch(type)
+ {
+ case ERROR_NOT_AVAILABLE:
+ LLNotificationsUtil::add("P2PCallNoAnswer", mNotifyArgs);
+ break;
+ default:
+ break;
+ }
- LLVoiceChannel::handleError(type);
+ LLVoiceChannel::handleError(type);
}
void LLVoiceChannelP2P::activate()
{
- if (callStarted()) return;
-
- //call will be counted as ended by user unless this variable is changed in handleStatusChange()
- mCallEndedByAgent = true;
-
- LLVoiceChannel::activate();
-
- if (callStarted())
- {
- // no session handle yet, we're starting the call
- if (mIncomingCallInterface == nullptr)
- {
- mReceivedCall = FALSE;
- mOutgoingCallInterface->callUser(mOtherUserID);
- }
- // otherwise answering the call
- else
- {
- if (!mIncomingCallInterface->answerInvite())
- {
- mCallEndedByAgent = false;
- mIncomingCallInterface.reset();
- handleError(ERROR_UNKNOWN);
- return;
- }
- // using the incoming call interface invalidates it. Clear it out here so we can't reuse it by accident.
- mIncomingCallInterface.reset();
- }
-
- // Add the party to the list of people with which we've recently interacted.
- addToTheRecentPeopleList();
-
- //Default mic is ON on initiating/joining P2P calls
- if (!LLVoiceClient::getInstance()->getUserPTTState() && LLVoiceClient::getInstance()->getPTTIsToggle())
- {
- LLVoiceClient::getInstance()->inputUserControlState(true);
- }
- }
+ if (callStarted()) return;
+
+ //call will be counted as ended by user unless this variable is changed in handleStatusChange()
+ mCallEndedByAgent = true;
+
+ LLVoiceChannel::activate();
+
+ if (callStarted())
+ {
+ // no session handle yet, we're starting the call
+ if (mIncomingCallInterface == nullptr)
+ {
+ mReceivedCall = FALSE;
+ mOutgoingCallInterface->callUser(mOtherUserID);
+ }
+ // otherwise answering the call
+ else
+ {
+ if (!mIncomingCallInterface->answerInvite())
+ {
+ mCallEndedByAgent = false;
+ mIncomingCallInterface.reset();
+ handleError(ERROR_UNKNOWN);
+ return;
+ }
+ // using the incoming call interface invalidates it. Clear it out here so we can't reuse it by accident.
+ mIncomingCallInterface.reset();
+ }
+
+ // Add the party to the list of people with which we've recently interacted.
+ addToTheRecentPeopleList();
+
+ //Default mic is ON on initiating/joining P2P calls
+ if (!LLVoiceClient::getInstance()->getUserPTTState() && LLVoiceClient::getInstance()->getPTTIsToggle())
+ {
+ LLVoiceClient::getInstance()->inputUserControlState(true);
+ }
+ }
}
void LLVoiceChannelP2P::deactivate()
{
- if (callStarted())
- {
- mOutgoingCallInterface->hangup();
- }
- LLVoiceChannel::deactivate();
+ if (callStarted())
+ {
+ mOutgoingCallInterface->hangup();
+ }
+ LLVoiceChannel::deactivate();
}
void LLVoiceChannelP2P::requestChannelInfo()
{
- // pretend we have everything we need, since P2P doesn't use channel info
- if (sCurrentVoiceChannel == this)
- {
- setState(STATE_CALL_STARTED);
- }
+ // pretend we have everything we need, since P2P doesn't use channel info
+ if (sCurrentVoiceChannel == this)
+ {
+ setState(STATE_CALL_STARTED);
+ }
}
// receiving session from other user who initiated call
void LLVoiceChannelP2P::setChannelInfo(const LLSD& channel_info)
-{
- mChannelInfo = channel_info;
- BOOL needs_activate = FALSE;
- if (callStarted())
- {
- // defer to lower agent id when already active
- if (mOtherUserID < gAgent.getID())
- {
- // pretend we haven't started the call yet, so we can connect to this session instead
- deactivate();
- needs_activate = TRUE;
- }
- else
- {
- // we are active and have priority, invite the other user again
- // under the assumption they will join this new session
- mOutgoingCallInterface->callUser(mOtherUserID);
- return;
- }
- }
-
- mReceivedCall = TRUE;
- if (!channel_info.isUndefined())
- {
- mIncomingCallInterface = LLVoiceClient::getInstance()->getIncomingCallInterface(channel_info);
- }
- if (needs_activate)
- {
- activate();
- }
+{
+ mChannelInfo = channel_info;
+ BOOL needs_activate = FALSE;
+ if (callStarted())
+ {
+ // defer to lower agent id when already active
+ if (mOtherUserID < gAgent.getID())
+ {
+ // pretend we haven't started the call yet, so we can connect to this session instead
+ deactivate();
+ needs_activate = TRUE;
+ }
+ else
+ {
+ // we are active and have priority, invite the other user again
+ // under the assumption they will join this new session
+ mOutgoingCallInterface->callUser(mOtherUserID);
+ return;
+ }
+ }
+
+ mReceivedCall = TRUE;
+ if (!channel_info.isUndefined())
+ {
+ mIncomingCallInterface = LLVoiceClient::getInstance()->getIncomingCallInterface(channel_info);
+ }
+ if (needs_activate)
+ {
+ activate();
+ }
}
void LLVoiceChannelP2P::setState(EState state)
{
- LL_INFOS("Voice") << "P2P CALL STATE CHANGE: incoming=" << int(mReceivedCall) << " oldstate=" << mState << " newstate=" << state << LL_ENDL;
+ LL_INFOS("Voice") << "P2P CALL STATE CHANGE: incoming=" << int(mReceivedCall) << " oldstate=" << mState << " newstate=" << state << LL_ENDL;
- if (mReceivedCall) // incoming call
- {
- // you only "answer" voice invites in p2p mode
- // so provide a special purpose message here
- if (mReceivedCall && state == STATE_RINGING)
- {
- //TODO: remove or redirect this call status notification
- // LLCallInfoDialog::show("answering", mNotifyArgs);
- doSetState(state);
- return;
- }
- }
+ if (mReceivedCall) // incoming call
+ {
+ // you only "answer" voice invites in p2p mode
+ // so provide a special purpose message here
+ if (mReceivedCall && state == STATE_RINGING)
+ {
+ //TODO: remove or redirect this call status notification
+ // LLCallInfoDialog::show("answering", mNotifyArgs);
+ doSetState(state);
+ return;
+ }
+ }
- LLVoiceChannel::setState(state);
+ LLVoiceChannel::setState(state);
}
void LLVoiceChannelP2P::addToTheRecentPeopleList()
{
- LLRecentPeople::instance().add(mOtherUserID);
+ LLRecentPeople::instance().add(mOtherUserID);
}