diff options
author | Roxie Linden <roxie@lindenlab.com> | 2010-04-14 17:21:44 -0700 |
---|---|---|
committer | Roxie Linden <roxie@lindenlab.com> | 2010-04-14 17:21:44 -0700 |
commit | d66c242fea8a846f087562d5ae2b32c50a3f5ef1 (patch) | |
tree | 0d44501ae82536706e88c9026f8dfe977bb47f94 /indra | |
parent | 8d8f167a4e58583c55901448a7bc5dd88b60e5f7 (diff) |
DEV-48904 - p2p acceptance dialog vanishes too quickly
DEV-48903 - malformed names in p2p dialogs for Diamondware
In the merge there were some changes that didn't get propagated that resulted in some failures with
respect to diamondware name processing. THe determination as to whether a p2p session was with
an avatar or with an alcatel (pbx) wasn't propagated into the diamondware code.
I fixed that by merging the changes to the vivox module with respect to that into the diamondware module.
Also, the acceptance dialog was vanishing too quickly as the determination as to whether there was still
a p2p invite pending was not updated when the calling code was updated.
The calling code initially was changed to look into vivox state which isn't really valid. that was changed in
the 'trunk' to another mechanism, but that still assumed visibility into the voice code.
I fixed that by creating an API call to ask whether a call was pending.
CR: Karina
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llimview.cpp | 8 | ||||
-rw-r--r-- | indra/newview/llvoiceclient.cpp | 12 | ||||
-rw-r--r-- | indra/newview/llvoiceclient.h | 4 | ||||
-rw-r--r-- | indra/newview/llvoicevivox.cpp | 13 | ||||
-rw-r--r-- | indra/newview/llvoicevivox.h | 1 |
5 files changed, 26 insertions, 12 deletions
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index cf83d02b09..247f5b879a 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1847,12 +1847,8 @@ LLCallDialog(payload) void LLIncomingCallDialog::onLifetimeExpired() { - // check whether a call is valid or not - LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(mPayload["session_id"].asUUID()); - if(channelp && - (channelp->getState() != LLVoiceChannel::STATE_NO_CHANNEL_INFO) && - (channelp->getState() != LLVoiceChannel::STATE_ERROR) && - (channelp->getState() != LLVoiceChannel::STATE_HUNG_UP)) + std::string session_handle = mPayload["session_handle"].asString(); + if (LLVoiceClient::getInstance()->invitePending(session_handle)) { // restart notification's timer if call is still valid mLifetimeTimer.start(); diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index e067754e3e..35753178f7 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -385,6 +385,18 @@ void LLVoiceClient::callUser(const LLUUID &uuid) if (mVoiceModule) mVoiceModule->callUser(uuid); } +bool LLVoiceClient::invitePending(std::string &channelHandle) +{ + if (mVoiceModule) + { + return mVoiceModule->invitePending(channelHandle); + } + else + { + return false; + } +} + bool LLVoiceClient::answerInvite(std::string &channelHandle) { if (mVoiceModule) diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index f1a7d3dbec..d4b4f07651 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -176,6 +176,7 @@ public: //@{ // start a voice channel with the specified user virtual void callUser(const LLUUID &uuid)=0; + virtual bool invitePending(std::string& channelHandle)=0; virtual bool answerInvite(std::string &channelHandle)=0; virtual void declineInvite(std::string &channelHandle)=0; //@} @@ -324,7 +325,8 @@ static const F32 OVERDRIVEN_POWER_LEVEL; // NOTE that it will return an empty string if it's in the process of joining a channel. std::string getCurrentChannel(); // start a voice channel with the specified user - void callUser(const LLUUID &uuid); + void callUser(const LLUUID &uuid); + bool invitePending(std::string& channelHandle); bool answerInvite(std::string &channelHandle); void declineInvite(std::string &channelHandle); void leaveChannel(void); // call this on logout or teleport begin diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index f65b87c55b..9d74e7c7ac 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -4582,7 +4582,11 @@ void LLVivoxVoiceClient::endUserIMSession(const LLUUID &uuid) LL_DEBUGS("Voice") << "Session not found for participant ID " << uuid << LL_ENDL; } } - +bool LLVivoxVoiceClient::invitePending(std::string &sessionHandle) +{ + return(findSession(sessionHandle) != NULL); + +} bool LLVivoxVoiceClient::answerInvite(std::string &sessionHandle) { // this is only ever used to answer incoming p2p call invites. @@ -6217,12 +6221,10 @@ void LLVivoxVoiceClient::avatarNameResolved(const LLUUID &id, const std::string { mFriendsListDirty = true; } - // Iterate over all sessions. for(sessionIterator iter = sessionsBegin(); iter != sessionsEnd(); iter++) { sessionState *session = *iter; - // Check for this user as a participant in this session participantState *participant = session->findParticipantByID(id); if(participant) @@ -6249,13 +6251,14 @@ void LLVivoxVoiceClient::avatarNameResolved(const LLUUID &id, const std::string session->mVoiceInvitePending = false; gIMMgr->inviteToSession( - LLIMMgr::computeSessionID(IM_SESSION_P2P_INVITE, session->mCallerID), + session->mIMSessionID, session->mName, session->mCallerID, session->mName, IM_SESSION_P2P_INVITE, LLIMMgr::INVITATION_TYPE_VOICE, - session->mHandle); + session->mHandle, + session->mSIPURI); } } diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index 10577254e8..39759a399a 100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h @@ -166,6 +166,7 @@ public: //@{ // start a voice channel with the specified user virtual void callUser(const LLUUID &uuid); + virtual bool invitePending(std::string &channelHandle); virtual bool answerInvite(std::string &channelHandle); virtual void declineInvite(std::string &channelHandle); //@} |