summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorWilliam Todd Stinson <stinson@lindenlab.com>2012-11-08 12:38:09 -0800
committerWilliam Todd Stinson <stinson@lindenlab.com>2012-11-08 12:38:09 -0800
commita312498260c05cedd6fc6ecb60f5f74d6b72be46 (patch)
tree48f9de6ec835162fc9fe664647d1dfb96e6ca122 /indra
parentc4eaaa3d6a08330863119d550d365315ba7526bb (diff)
parentb8a229032efe7c170bfd32e0d31b8b29aac82eec (diff)
Pull and merge from ssh://stinson@hg.lindenlab.com/richard/viewer-chui/.
Diffstat (limited to 'indra')
-rwxr-xr-xindra/llui/llfolderviewitem.cpp2
-rwxr-xr-xindra/newview/llconversationview.cpp76
-rwxr-xr-xindra/newview/llconversationview.h6
-rw-r--r--indra/newview/llimconversation.cpp27
-rw-r--r--indra/newview/llimconversation.h2
-rw-r--r--indra/newview/llimfloater.cpp13
-rw-r--r--indra/newview/llimfloater.h3
-rw-r--r--indra/newview/llimfloatercontainer.cpp48
-rw-r--r--indra/newview/llimfloatercontainer.h4
-rw-r--r--indra/newview/llimview.cpp9
-rw-r--r--indra/newview/llnearbychat.cpp40
-rw-r--r--indra/newview/llnearbychat.h3
-rw-r--r--indra/newview/llspeakers.cpp2
-rw-r--r--indra/newview/llvoicevivox.cpp31
-rw-r--r--indra/newview/llvoicevivox.h2
-rwxr-xr-xindra/newview/skins/default/textures/icons/Conv_toolbar_add_person.pngbin322 -> 373 bytes
-rwxr-xr-xindra/newview/skins/default/textures/icons/Conv_toolbar_arrow_ne.pngbin301 -> 215 bytes
-rwxr-xr-xindra/newview/skins/default/textures/icons/Conv_toolbar_arrow_sw.pngbin293 -> 211 bytes
-rwxr-xr-xindra/newview/skins/default/textures/icons/Conv_toolbar_close.pngbin262 -> 275 bytes
-rwxr-xr-xindra/newview/skins/default/textures/icons/Conv_toolbar_collapse.pngbin663 -> 345 bytes
-rwxr-xr-xindra/newview/skins/default/textures/icons/Conv_toolbar_expand.pngbin662 -> 342 bytes
-rwxr-xr-xindra/newview/skins/default/textures/icons/Conv_toolbar_hang_up.pngbin460 -> 459 bytes
-rwxr-xr-xindra/newview/skins/default/textures/icons/Conv_toolbar_open_call.pngbin485 -> 366 bytes
-rwxr-xr-xindra/newview/skins/default/textures/icons/Conv_toolbar_plus.pngbin195 -> 144 bytes
-rwxr-xr-xindra/newview/skins/default/textures/icons/Conv_toolbar_sort.pngbin196 -> 230 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/nearby_chat_icon.pngbin553 -> 399 bytes
26 files changed, 167 insertions, 101 deletions
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp
index 7c63cad1b7..21fb9bff90 100755
--- a/indra/llui/llfolderviewitem.cpp
+++ b/indra/llui/llfolderviewitem.cpp
@@ -410,8 +410,8 @@ void LLFolderViewItem::selectItem(void)
{
if (mIsSelected == FALSE)
{
- getViewModelItem()->selectItem();
mIsSelected = TRUE;
+ getViewModelItem()->selectItem();
}
}
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index 2d3a008bf4..34b5976e3e 100755
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -203,6 +203,17 @@ void LLConversationViewSession::draw()
LLView::draw();
}
+BOOL LLConversationViewSession::handleMouseDown( S32 x, S32 y, MASK mask )
+{
+ LLConversationItem* item = dynamic_cast<LLConversationItem *>(getViewModelItem());
+ LLUUID session_id = item? item->getUUID() : LLUUID();
+
+ (LLFloaterReg::getTypedInstance<LLIMFloaterContainer>("im_container"))->
+ selectConversationPair(session_id, false);
+
+ return LLFolderViewFolder::handleMouseDown(x, y, mask);
+}
+
// virtual
S32 LLConversationViewSession::arrange(S32* width, S32* height)
{
@@ -233,29 +244,6 @@ void LLConversationViewSession::toggleOpen()
}
}
-void LLConversationViewSession::selectItem()
-{
-
- LLConversationItem* item = dynamic_cast<LLConversationItem*>(mViewModelItem);
- LLFloater* session_floater = LLIMConversation::getConversation(item->getUUID());
- LLMultiFloater* host_floater = session_floater->getHost();
-
- if (host_floater == mContainer)
- {
- // Always expand the message pane if the panel is hosted by the container
- mContainer->collapseMessagesPane(false);
- // Switch to the conversation floater that is being selected
- mContainer->selectFloater(session_floater);
- }
-
- // Set the focus on the selected floater
- session_floater->setFocus(TRUE);
- // Store the active session
- LLIMFloaterContainer::getInstance()->setSelectedSession(item->getUUID());
-
-
- LLFolderViewItem::selectItem();
-}
void LLConversationViewSession::toggleMinimizedMode(bool is_minimized)
{
@@ -441,31 +429,6 @@ void LLConversationViewParticipant::draw()
LLView::draw();
}
-void LLConversationViewParticipant::selectItem()
-{
- LLConversationItem* vmi = this->getParentFolder() ? static_cast<LLConversationItem*>(this->getParentFolder()->getViewModelItem()) : NULL;
- LLIMFloaterContainer* container = LLIMFloaterContainer::getInstance();
- LLFloater* session_floater;
-
- if(vmi)
- {
- session_floater = LLIMConversation::getConversation(vmi->getUUID());
-
- //Only execute when switching floaters (conversations)
- if(vmi->getUUID() != container->getSelectedSession())
- {
- container->selectFloater(session_floater);
- // Store the active session
- container->setSelectedSession(vmi->getUUID());
- }
-
- //Redirect focus to the conversation floater
- session_floater->setFocus(TRUE);
- }
-
- LLFolderViewItem::selectItem();
-}
-
void LLConversationViewParticipant::refresh()
{
// Refresh the participant view from its model data
@@ -514,6 +477,23 @@ void LLConversationViewParticipant::onMouseLeave(S32 x, S32 y, MASK mask)
LLFolderViewItem::onMouseLeave(x, y, mask);
}
+BOOL LLConversationViewParticipant::handleMouseDown( S32 x, S32 y, MASK mask )
+{
+ LLConversationItem* item = NULL;
+ LLConversationViewSession* session_widget =
+ dynamic_cast<LLConversationViewSession *>(this->getParentFolder());
+ if (session_widget)
+ {
+ item = dynamic_cast<LLConversationItem*>(session_widget->getViewModelItem());
+ }
+ LLUUID session_id = item? item->getUUID() : LLUUID();
+
+ (LLFloaterReg::getTypedInstance<LLIMFloaterContainer>("im_container"))->
+ selectConversationPair(session_id, false);
+
+ return LLFolderViewItem::handleMouseDown(x, y, mask);
+}
+
S32 LLConversationViewParticipant::getLabelXPos()
{
return mAvatarIcon->getRect().mRight + mIconPad;
diff --git a/indra/newview/llconversationview.h b/indra/newview/llconversationview.h
index aeca747260..ac91d2d26f 100755
--- a/indra/newview/llconversationview.h
+++ b/indra/newview/llconversationview.h
@@ -60,10 +60,10 @@ protected:
public:
virtual ~LLConversationViewSession();
- virtual void selectItem();
/*virtual*/ BOOL postBuild();
/*virtual*/ void draw();
+ /*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask );
/*virtual*/ S32 arrange(S32* width, S32* height);
@@ -117,11 +117,13 @@ public:
};
virtual ~LLConversationViewParticipant( void ) { }
- void selectItem();
+
bool hasSameValue(const LLUUID& uuid) { return (uuid == mUUID); }
virtual void refresh();
void addToFolder(LLFolderViewFolder* folder);
+ /*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask );
+
void onMouseEnter(S32 x, S32 y, MASK mask);
void onMouseLeave(S32 x, S32 y, MASK mask);
diff --git a/indra/newview/llimconversation.cpp b/indra/newview/llimconversation.cpp
index 833feff3c4..51e4fbfe19 100644
--- a/indra/newview/llimconversation.cpp
+++ b/indra/newview/llimconversation.cpp
@@ -128,6 +128,22 @@ void LLIMConversation::setVisible(BOOL visible)
setFocus(visible);
}
+/*virtual*/
+void LLIMConversation::setFocus(BOOL focus)
+{
+ LLTransientDockableFloater::setFocus(focus);
+
+ //Redirect focus to input editor
+ if (focus)
+ {
+ updateMessages();
+
+ if (mInputEditor)
+ {
+ mInputEditor->setFocus(TRUE);
+ }
+ }
+}
void LLIMConversation::addToHost(const LLUUID& session_id)
@@ -203,10 +219,6 @@ BOOL LLIMConversation::postBuild()
if (isChatMultiTab())
{
- if (mIsNearbyChat)
- {
- setCanClose(FALSE);
- }
result = LLFloater::postBuild();
}
else
@@ -247,7 +259,6 @@ void LLIMConversation::enableDisableCallBtn()
&& mSession->mCallBackEnabled);
}
-
void LLIMConversation::onFocusReceived()
{
setBackgroundOpaque(true);
@@ -258,6 +269,12 @@ void LLIMConversation::onFocusReceived()
}
LLTransientDockableFloater::onFocusReceived();
+
+ LLIMFloaterContainer* container = LLFloaterReg::getTypedInstance<LLIMFloaterContainer>("im_container");
+ if (container)
+ {
+ container->selectConversationPair(mSessionID, true);
+ }
}
void LLIMConversation::onFocusLost()
diff --git a/indra/newview/llimconversation.h b/indra/newview/llimconversation.h
index bff4cb4a31..d1e2bfff55 100644
--- a/indra/newview/llimconversation.h
+++ b/indra/newview/llimconversation.h
@@ -79,7 +79,9 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void draw();
/*virtual*/ void setVisible(BOOL visible);
+ /*virtual*/ void setFocus(BOOL focus);
+ virtual void updateMessages() {}
protected:
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 3545b8ff18..2ff883da67 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -671,19 +671,6 @@ void LLIMFloater::setDocked(bool docked, bool pop_on_undock)
}
}
-void LLIMFloater::setFocus(BOOL focusFlag)
-{
- LLTransientDockableFloater::setFocus(focusFlag);
-
- //Redirect focus to input editor
- if (focusFlag)
- {
- updateMessages();
- mInputEditor->setFocus(TRUE);
- }
-
-}
-
void LLIMFloater::setVisible(BOOL visible)
{
LLNotificationsUI::LLScreenChannel* channel = static_cast<LLNotificationsUI::LLScreenChannel*>
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index 6c69ed3462..1fae3cff50 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -65,7 +65,6 @@ public:
// LLView overrides
/*virtual*/ BOOL postBuild();
- /*virtual*/ void setFocus(BOOL focusFlag);
/*virtual*/ void setVisible(BOOL visible);
/*virtual*/ BOOL getVisible();
// Check typing timeout timer.
@@ -86,7 +85,7 @@ public:
void sessionInitReplyReceived(const LLUUID& im_session_id);
// get new messages from LLIMModel
- void updateMessages();
+ /*virtual*/ void updateMessages();
void reloadMessages();
static void onSendMsg(LLUICtrl*, void*);
void sendMsgFromInputEditor();
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index af43b1ac38..df2491acbd 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -1091,6 +1091,47 @@ void LLIMFloaterContainer::selectConversation(const LLUUID& session_id)
}
}
+// Synchronous select the conversation item and the conversation floater
+BOOL LLIMFloaterContainer::selectConversationPair(const LLUUID& session_id, bool select_widget)
+{
+ BOOL handled = TRUE;
+
+ /* widget processing */
+ if (select_widget)
+ {
+ LLFolderViewItem* widget = mConversationsWidgets[session_id];
+ if (widget && widget->getParentFolder())
+ {
+ widget->getParentFolder()->setSelection(widget, FALSE, FALSE);
+ }
+ }
+
+ /* floater processing */
+
+ if (session_id != getSelectedSession())
+ {
+ // Store the active session
+ setSelectedSession(session_id);
+
+ LLIMConversation* session_floater = LLIMConversation::getConversation(session_id);
+
+ if (session_floater->getHost())
+ {
+ // Always expand the message pane if the panel is hosted by the container
+ collapseMessagesPane(false);
+ // Switch to the conversation floater that is being selected
+ selectFloater(session_floater);
+ }
+
+ // Set the focus on the selected floater
+ if (!session_floater->hasFocus())
+ {
+ session_floater->setFocus(TRUE);
+ }
+ }
+
+ return handled;
+}
void LLIMFloaterContainer::setTimeNow(const LLUUID& session_id, const LLUUID& participant_id)
{
@@ -1487,4 +1528,11 @@ void LLIMFloaterContainer::openNearbyChat()
}
}
+void LLIMFloaterContainer::onNearbyChatClosed()
+{
+ // If nearby chat is the only remaining conversation and it is closed, close whole conversation floater as well
+ if (mConversationsItems.size() == 1)
+ closeFloater();
+}
+
// EOF
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index 05ea94019b..691bc39811 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -68,6 +68,8 @@ public:
void showConversation(const LLUUID& session_id);
void selectConversation(const LLUUID& session_id);
+ BOOL selectConversationPair(const LLUUID& session_id, bool select_widget);
+
/*virtual*/ void tabClose();
static LLFloater* getCurrentVoiceFloater();
@@ -92,6 +94,8 @@ public:
LLUUID getSelectedSession() { return mSelectedSession; }
void setSelectedSession(LLUUID sessionID) { mSelectedSession = sessionID; }
+ void onNearbyChatClosed();
+
private:
typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;
avatarID_panel_map_t mSessions;
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 9b14a77c08..9f24a5372f 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -121,7 +121,14 @@ void toast_callback(const LLSD& msg){
// Skip toasting if we have open window of IM with this session id
LLIMFloater* open_im_floater = LLIMFloater::findInstance(msg["session_id"]);
- if (open_im_floater && open_im_floater->isInVisibleChain() && open_im_floater->hasFocus())
+ if (
+ open_im_floater
+ && open_im_floater->isInVisibleChain()
+ && open_im_floater->hasFocus()
+ && !open_im_floater->isMinimized()
+ && !(open_im_floater->getHost()
+ && open_im_floater->getHost()->isMinimized())
+ )
{
return;
}
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index d1c7c6bfd7..dbdf460785 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -195,8 +195,13 @@ BOOL LLNearbyChat::handleMouseDown(S32 x, S32 y, MASK mask)
//background opaque. This all happenn since NearByChat is "chrome" and didn't process focus change.
if(mChatHistory)
+ {
mChatHistory->setFocus(TRUE);
- return LLPanel::handleMouseDown(x, y, mask);
+ }
+
+ BOOL handled = LLPanel::handleMouseDown(x, y, mask);
+ setFocus(handled);
+ return handled;
}
void LLNearbyChat::reloadMessages()
@@ -270,17 +275,6 @@ void LLNearbyChat::removeScreenChat()
}
}
-void LLNearbyChat::setFocus(BOOL focusFlag)
-{
- LLTransientDockableFloater::setFocus(focusFlag);
-
- //Redirect focus to input editor
- if (focusFlag)
- {
- mInputEditor->setFocus(TRUE);
- }
-
-}
void LLNearbyChat::setVisible(BOOL visible)
{
@@ -293,7 +287,7 @@ void LLNearbyChat::setVisible(BOOL visible)
setFocus(visible);
}
-
+// virtual
void LLNearbyChat::onTearOffClicked()
{
LLIMConversation::onTearOffClicked();
@@ -311,6 +305,26 @@ void LLNearbyChat::onOpen(const LLSD& key)
showTranslationCheckbox(LLTranslate::isTranslationConfigured());
}
+// virtual
+void LLNearbyChat::onClose(bool app_quitting)
+{
+ // Override LLIMConversation::onClose() so that Nearby Chat is not removed from the conversation floater
+}
+
+// virtual
+void LLNearbyChat::onClickCloseBtn()
+{
+ if (!isTornOff())
+ return;
+ onTearOffClicked();
+
+ LLIMFloaterContainer *im_box = LLIMFloaterContainer::findInstance();
+ if (im_box)
+ {
+ im_box->onNearbyChatClosed();
+ }
+}
+
void LLNearbyChat::onChatFontChange(LLFontGL* fontp)
{
// Update things with the new font whohoo
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index b155fd3c26..c6a2637e8f 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -52,7 +52,7 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
- /*virtual*/ void setFocus(BOOL focusFlag);
+ /*virtual*/ void onClose(bool app_quitting);
/*virtual*/ void setVisible(BOOL visible);
void loadHistory();
@@ -96,6 +96,7 @@ protected:
void onChatFontChange(LLFontGL* fontp);
/*virtual*/ void onTearOffClicked();
+ /*virtual*/ void onClickCloseBtn();
static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
EChatType processChatTypeTriggers(EChatType type, std::string &str);
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 46fd8c1290..726199b7aa 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -504,7 +504,7 @@ void LLSpeakerMgr::update(BOOL resort_ok)
void LLSpeakerMgr::updateSpeakerList()
{
// are we bound to the currently active voice channel?
- if ((!mVoiceChannel && LLVoiceClient::getInstance()->inProximalChannel()) || (mVoiceChannel && mVoiceChannel->isActive()))
+ if ((!mVoiceChannel && LLVoiceClient::getInstance()->inProximalChannel()) || (mVoiceChannel))
{
std::set<LLUUID> participants;
LLVoiceClient::getInstance()->getParticipantList(participants);
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 71006d38d2..412e4593bc 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -291,6 +291,7 @@ LLVivoxVoiceClient::LLVivoxVoiceClient() :
mCaptureDeviceDirty(false),
mRenderDeviceDirty(false),
mSpatialCoordsDirty(false),
+ mIsInitialized(false),
mMuteMic(false),
mMuteMicDirty(false),
@@ -520,7 +521,7 @@ void LLVivoxVoiceClient::requestVoiceAccountProvision(S32 retries)
{
LLViewerRegion *region = gAgent.getRegion();
- if ( region && mVoiceEnabled )
+ if ( region && (mVoiceEnabled || !mIsInitialized))
{
std::string url =
region->getCapability("ProvisionVoiceAccountRequest");
@@ -691,7 +692,7 @@ void LLVivoxVoiceClient::stateMachine()
setVoiceEnabled(false);
}
- if(mVoiceEnabled)
+ if(mVoiceEnabled || !mIsInitialized)
{
updatePosition();
}
@@ -736,7 +737,7 @@ void LLVivoxVoiceClient::stateMachine()
//MARK: stateDisabled
case stateDisabled:
- if(mTuningMode || (mVoiceEnabled && !mAccountName.empty()))
+ if(mTuningMode || ((mVoiceEnabled || !mIsInitialized) && !mAccountName.empty()))
{
setState(stateStart);
}
@@ -891,7 +892,7 @@ void LLVivoxVoiceClient::stateMachine()
mTuningExitState = stateIdle;
setState(stateMicTuningStart);
}
- else if(!mVoiceEnabled)
+ else if(!mVoiceEnabled && mIsInitialized)
{
// We never started up the connector. This will shut down the daemon.
setState(stateConnectorStopped);
@@ -1085,7 +1086,7 @@ void LLVivoxVoiceClient::stateMachine()
//MARK: stateConnectorStart
case stateConnectorStart:
- if(!mVoiceEnabled)
+ if(!mVoiceEnabled && mIsInitialized)
{
// We were never logged in. This will shut down the connector.
setState(stateLoggedOut);
@@ -1103,7 +1104,7 @@ void LLVivoxVoiceClient::stateMachine()
//MARK: stateConnectorStarted
case stateConnectorStarted: // connector handle received
- if(!mVoiceEnabled)
+ if(!mVoiceEnabled && mIsInitialized)
{
// We were never logged in. This will shut down the connector.
setState(stateLoggedOut);
@@ -1247,7 +1248,7 @@ void LLVivoxVoiceClient::stateMachine()
//MARK: stateCreatingSessionGroup
case stateCreatingSessionGroup:
- if(mSessionTerminateRequested || !mVoiceEnabled)
+ if(mSessionTerminateRequested || !mVoiceEnabled && mIsInitialized)
{
// *TODO: Question: is this the right way out of this state
setState(stateSessionTerminated);
@@ -1263,7 +1264,7 @@ void LLVivoxVoiceClient::stateMachine()
//MARK: stateRetrievingParcelVoiceInfo
case stateRetrievingParcelVoiceInfo:
// wait until parcel voice info is received.
- if(mSessionTerminateRequested || !mVoiceEnabled)
+ if(mSessionTerminateRequested || !mVoiceEnabled && mIsInitialized)
{
// if a terminate request has been received,
// bail and go to the stateSessionTerminated
@@ -1283,7 +1284,7 @@ void LLVivoxVoiceClient::stateMachine()
// Otherwise, if you log in but don't join a proximal channel (such as when your login location has voice disabled), your friends list won't sync.
sendFriendsListUpdates();
- if(mSessionTerminateRequested || !mVoiceEnabled)
+ if(mSessionTerminateRequested || !mVoiceEnabled && mIsInitialized)
{
// TODO: Question: Is this the right way out of this state?
setState(stateSessionTerminated);
@@ -1364,7 +1365,7 @@ void LLVivoxVoiceClient::stateMachine()
}
// joinedAudioSession() will transition from here to stateSessionJoined.
- if(!mVoiceEnabled)
+ if(!mVoiceEnabled && mIsInitialized)
{
// User bailed out during connect -- jump straight to teardown.
setState(stateSessionTerminated);
@@ -1411,7 +1412,7 @@ void LLVivoxVoiceClient::stateMachine()
notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_JOINED);
}
- else if(!mVoiceEnabled)
+ else if(!mVoiceEnabled && mIsInitialized)
{
// User bailed out during connect -- jump straight to teardown.
setState(stateSessionTerminated);
@@ -1431,7 +1432,7 @@ void LLVivoxVoiceClient::stateMachine()
//MARK: stateRunning
case stateRunning: // steady state
// Disabling voice or disconnect requested.
- if(!mVoiceEnabled || mSessionTerminateRequested)
+ if(!mVoiceEnabled && mIsInitialized || mSessionTerminateRequested)
{
leaveAudioSession();
}
@@ -1478,6 +1479,8 @@ void LLVivoxVoiceClient::stateMachine()
mUpdateTimer.setTimerExpirySec(UPDATE_THROTTLE_SECONDS);
sendPositionalUpdate();
}
+
+ mIsInitialized = true;
}
break;
@@ -1511,7 +1514,7 @@ void LLVivoxVoiceClient::stateMachine()
// Always reset the terminate request flag when we get here.
mSessionTerminateRequested = false;
- if(mVoiceEnabled && !mRelogRequested)
+ if((mVoiceEnabled || !mIsInitialized) && !mRelogRequested)
{
// Just leaving a channel, go back to stateNoChannel (the "logged in but have no channel" state).
setState(stateNoChannel);
@@ -1539,7 +1542,7 @@ void LLVivoxVoiceClient::stateMachine()
mAccountHandle.clear();
cleanUp();
- if(mVoiceEnabled && !mRelogRequested)
+ if((mVoiceEnabled || !mIsInitialized) && !mRelogRequested)
{
// User was logged out, but wants to be logged in. Send a new login request.
setState(stateNeedsLogin);
diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h
index 1142a1a49c..f2a3a7d3dd 100644
--- a/indra/newview/llvoicevivox.h
+++ b/indra/newview/llvoicevivox.h
@@ -741,6 +741,8 @@ private:
std::string mRenderDevice;
bool mCaptureDeviceDirty;
bool mRenderDeviceDirty;
+
+ bool mIsInitialized;
bool checkParcelChanged(bool update = false);
diff --git a/indra/newview/skins/default/textures/icons/Conv_toolbar_add_person.png b/indra/newview/skins/default/textures/icons/Conv_toolbar_add_person.png
index f024c733f3..0631f16f3b 100755
--- a/indra/newview/skins/default/textures/icons/Conv_toolbar_add_person.png
+++ b/indra/newview/skins/default/textures/icons/Conv_toolbar_add_person.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Conv_toolbar_arrow_ne.png b/indra/newview/skins/default/textures/icons/Conv_toolbar_arrow_ne.png
index a19e720d42..578482f5ed 100755
--- a/indra/newview/skins/default/textures/icons/Conv_toolbar_arrow_ne.png
+++ b/indra/newview/skins/default/textures/icons/Conv_toolbar_arrow_ne.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Conv_toolbar_arrow_sw.png b/indra/newview/skins/default/textures/icons/Conv_toolbar_arrow_sw.png
index 7f3f42639d..7676131790 100755
--- a/indra/newview/skins/default/textures/icons/Conv_toolbar_arrow_sw.png
+++ b/indra/newview/skins/default/textures/icons/Conv_toolbar_arrow_sw.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Conv_toolbar_close.png b/indra/newview/skins/default/textures/icons/Conv_toolbar_close.png
index 25a939d7f5..d009c8f446 100755
--- a/indra/newview/skins/default/textures/icons/Conv_toolbar_close.png
+++ b/indra/newview/skins/default/textures/icons/Conv_toolbar_close.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Conv_toolbar_collapse.png b/indra/newview/skins/default/textures/icons/Conv_toolbar_collapse.png
index 82baabde47..8d82960e28 100755
--- a/indra/newview/skins/default/textures/icons/Conv_toolbar_collapse.png
+++ b/indra/newview/skins/default/textures/icons/Conv_toolbar_collapse.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Conv_toolbar_expand.png b/indra/newview/skins/default/textures/icons/Conv_toolbar_expand.png
index 7d64abb042..f718d3fc60 100755
--- a/indra/newview/skins/default/textures/icons/Conv_toolbar_expand.png
+++ b/indra/newview/skins/default/textures/icons/Conv_toolbar_expand.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Conv_toolbar_hang_up.png b/indra/newview/skins/default/textures/icons/Conv_toolbar_hang_up.png
index f0da962c2d..315e2c581a 100755
--- a/indra/newview/skins/default/textures/icons/Conv_toolbar_hang_up.png
+++ b/indra/newview/skins/default/textures/icons/Conv_toolbar_hang_up.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Conv_toolbar_open_call.png b/indra/newview/skins/default/textures/icons/Conv_toolbar_open_call.png
index 0db001dcdb..732ab02a20 100755
--- a/indra/newview/skins/default/textures/icons/Conv_toolbar_open_call.png
+++ b/indra/newview/skins/default/textures/icons/Conv_toolbar_open_call.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Conv_toolbar_plus.png b/indra/newview/skins/default/textures/icons/Conv_toolbar_plus.png
index 0cf7edc2d4..25a32cb2ba 100755
--- a/indra/newview/skins/default/textures/icons/Conv_toolbar_plus.png
+++ b/indra/newview/skins/default/textures/icons/Conv_toolbar_plus.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Conv_toolbar_sort.png b/indra/newview/skins/default/textures/icons/Conv_toolbar_sort.png
index a0c15a6d3e..08debeb91f 100755
--- a/indra/newview/skins/default/textures/icons/Conv_toolbar_sort.png
+++ b/indra/newview/skins/default/textures/icons/Conv_toolbar_sort.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/nearby_chat_icon.png b/indra/newview/skins/default/textures/icons/nearby_chat_icon.png
index 48c2379133..5ac4258b9d 100644
--- a/indra/newview/skins/default/textures/icons/nearby_chat_icon.png
+++ b/indra/newview/skins/default/textures/icons/nearby_chat_icon.png
Binary files differ