summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llfloaterimcontainer.cpp7
-rw-r--r--indra/newview/llfloaterimcontainer.h1
-rw-r--r--indra/newview/llfloaterimsessiontab.cpp1
-rw-r--r--indra/newview/llvoiceclient.cpp1
-rw-r--r--indra/newview/llvoiceclient.h6
5 files changed, 14 insertions, 2 deletions
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index cc053ca658..75b311eecf 100644
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -88,6 +88,11 @@ LLFloaterIMContainer::~LLFloaterIMContainer()
mNewMessageConnection.disconnect();
LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this);
+ if (mMicroChangedSignal.connected())
+ {
+ mMicroChangedSignal.disconnect();
+ }
+
gSavedPerAccountSettings.setBOOL("ConversationsListPaneCollapsed", mConversationsPane->isCollapsed());
gSavedPerAccountSettings.setBOOL("ConversationsMessagePaneCollapsed", mMessagesPane->isCollapsed());
@@ -213,7 +218,7 @@ BOOL LLFloaterIMContainer::postBuild()
collapseMessagesPane(gSavedPerAccountSettings.getBOOL("ConversationsMessagePaneCollapsed"));
collapseConversationsPane(gSavedPerAccountSettings.getBOOL("ConversationsListPaneCollapsed"));
LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLFloaterIMSessionTab::processChatHistoryStyleUpdate));
-
+ mMicroChangedSignal = LLVoiceClient::getInstance()->MicroChangedCallback(boost::bind(&LLFloaterIMContainer::updateSpeakBtnState, this));
if (! mMessagesPane->isCollapsed())
{
S32 list_width = gSavedPerAccountSettings.getS32("ConversationsListPaneWidth");
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index 3818645037..4f1bb96d9b 100644
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -176,6 +176,7 @@ public:
void updateSpeakBtnState();
static bool isConversationLoggingAllowed();
void flashConversationItemWidget(const LLUUID& session_id, bool is_flashes);
+ boost::signals2::connection mMicroChangedSignal;
private:
LLConversationViewSession* createConversationItemWidget(LLConversationItem* item);
diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp
index 4c6d8fa5a0..0eb0289f49 100644
--- a/indra/newview/llfloaterimsessiontab.cpp
+++ b/indra/newview/llfloaterimsessiontab.cpp
@@ -693,7 +693,6 @@ void LLFloaterIMSessionTab::updateCallBtnState(bool callIsActive)
voiceButton->setToolTip(
callIsActive? getString("end_call_button_tooltip") : getString("start_call_button_tooltip"));
- LLFloaterIMContainer::getInstance()->updateSpeakBtnState();
enableDisableCallBtn();
}
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 730f022c50..dd529d74e9 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -551,6 +551,7 @@ void LLVoiceClient::setUserPTTState(bool ptt)
{
mUserPTTState = ptt;
updateMicMuteLogic();
+ mMicroChangedSignal();
}
bool LLVoiceClient::getUserPTTState()
diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h
index c9aeea35a9..714dd6a9f2 100644
--- a/indra/newview/llvoiceclient.h
+++ b/indra/newview/llvoiceclient.h
@@ -303,6 +303,9 @@ public:
LLVoiceClient();
~LLVoiceClient();
+ typedef boost::signals2::signal<void(void)> micro_changed_signal_t;
+ micro_changed_signal_t mMicroChangedSignal;
+
void init(LLPumpIO *pump); // Call this once at application startup (creates connector)
void terminate(); // Call this to clean up during shutdown
@@ -401,6 +404,8 @@ public:
void keyUp(KEY key, MASK mask);
void middleMouseState(bool down);
+ boost::signals2::connection MicroChangedCallback(const micro_changed_signal_t::slot_type& cb ) { return mMicroChangedSignal.connect(cb); }
+
/////////////////////////////
// Accessors for data related to nearby speakers
@@ -456,6 +461,7 @@ protected:
LLVoiceModuleInterface* mVoiceModule;
LLPumpIO *m_servicePump;
+
LLCachedControl<bool> mVoiceEffectEnabled;
LLCachedControl<std::string> mVoiceEffectDefault;