diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp index 5e1cf801b9..af57169f3b 100644 --- a/indra/newview/llpanelvoicedevicesettings.cpp +++ b/indra/newview/llpanelvoicedevicesettings.cpp @@ -32,6 +32,7 @@ // Viewer includes #include "llcombobox.h" #include "llsliderctrl.h" +#include "llstartup.h" #include "llviewercontrol.h" #include "llvoiceclient.h" #include "llvoicechannel.h" @@ -70,14 +71,14 @@ BOOL LLPanelVoiceDeviceSettings::postBuild() mCtrlInputDevices = getChild("voice_input_device"); mCtrlOutputDevices = getChild("voice_output_device"); - mRetryBtn = getChild("retry_btn"); + mUnmuteBtn = getChild("unmute_btn"); mCtrlInputDevices->setCommitCallback( boost::bind(&LLPanelVoiceDeviceSettings::onCommitInputDevice, this)); mCtrlOutputDevices->setCommitCallback( boost::bind(&LLPanelVoiceDeviceSettings::onCommitOutputDevice, this)); - mRetryBtn->setCommitCallback( - boost::bind(&LLPanelVoiceDeviceSettings::onCommitRetry, this)); + mUnmuteBtn->setCommitCallback( + boost::bind(&LLPanelVoiceDeviceSettings::onCommitUnmute, this)); mLocalizedDeviceNames[DEFAULT_DEVICE] = getString("default_text"); mLocalizedDeviceNames["No Device"] = getString("name_no_device"); @@ -115,16 +116,18 @@ void LLPanelVoiceDeviceSettings::draw() if (voice_enabled) { getChildView("wait_text")->setVisible( !is_in_tuning_mode && mUseTuningMode); - getChildView("muted_text")->setVisible(FALSE); - mRetryBtn->setVisible(FALSE); + getChildView("disabled_text")->setVisible(FALSE); + mUnmuteBtn->setVisible(FALSE); } else { getChildView("wait_text")->setVisible(FALSE); - getChildView("muted_text")->setVisible(TRUE); - static LLCachedControl voice_enabled(gSavedSettings, "EnableVoiceChat"); - mRetryBtn->setVisible(!voice_enabled || LLVoiceClient::isMutedVoiceInstance()); + static LLCachedControl chat_enabled(gSavedSettings, "EnableVoiceChat"); + // If voice isn't enabled, it is either disabled or muted + bool voice_disabled = chat_enabled() || LLStartUp::getStartupState() <= STATE_LOGIN_WAIT; + getChildView("disabled_text")->setVisible(voice_disabled); + mUnmuteBtn->setVisible(!voice_disabled); } LLPanel::draw(); @@ -357,8 +360,7 @@ void LLPanelVoiceDeviceSettings::onInputDevicesClicked() LLVoiceClient::getInstance()->refreshDeviceLists(false); // fill in the pop up menus again if needed. } -void LLPanelVoiceDeviceSettings::onCommitRetry() +void LLPanelVoiceDeviceSettings::onCommitUnmute() { gSavedSettings.setBOOL("EnableVoiceChat", TRUE); - LLVoiceClient::unmuteVoiceInstance(); } diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h index 6b85d4e540..e704394d4a 100644 --- a/indra/newview/llpanelvoicedevicesettings.h +++ b/indra/newview/llpanelvoicedevicesettings.h @@ -55,14 +55,14 @@ protected: void onCommitOutputDevice(); void onOutputDevicesClicked(); void onInputDevicesClicked(); - void onCommitRetry(); + void onCommitUnmute(); F32 mMicVolume; std::string mInputDevice; std::string mOutputDevice; class LLComboBox *mCtrlInputDevices; class LLComboBox *mCtrlOutputDevices; - class LLButton *mRetryBtn; + class LLButton *mUnmuteBtn; BOOL mDevicesUpdated; bool mUseTuningMode; std::map mLocalizedDeviceNames; diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp index 701a7767ec..26a4d54ee2 100644 --- a/indra/newview/llpanelvolumepulldown.cpp +++ b/indra/newview/llpanelvolumepulldown.cpp @@ -40,7 +40,6 @@ #include "llfloaterreg.h" #include "llfloaterpreference.h" #include "llsliderctrl.h" -#include "llvoicevivox.h" #include "llcheckboxctrl.h" #include "llviewercontrol.h" @@ -125,10 +124,6 @@ void LLPanelVolumePulldown::updateCheckbox(LLUICtrl* ctrl, const LLSD& user_data getChild("media_auto_play_combo")->setEnabled(music_enabled || media_enabled); } } - else if (control_name == "VoiceChat") - { - LLVivoxVoiceClient::unmuteVoiceInstance(); - } } void LLPanelVolumePulldown::onClickSetSounds() diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 7cc8a775a0..b571541d06 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -2285,7 +2285,7 @@ void LLPreviewLSL::draw() setTitle(LLTrans::getString("ScriptWasDeleted")); mScriptEd->setItemRemoved(TRUE); } - if (mDirty) + else if (mDirty) { // Make ugly location display better //std::string item_path = get_category_path(item->getParentUUID()); diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 65c1e5a93e..7c12f35566 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -67,7 +67,6 @@ #include "llviewermenu.h" // for gMenuBarView #include "llviewerparcelmgr.h" #include "llviewerthrottle.h" -#include "llvoiceclient.h" #include "lluictrlfactory.h" #include "lltoolmgr.h" @@ -353,12 +352,9 @@ BOOL LLStatusBar::postBuild() gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2)); gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&LLStatusBar::onVoiceChanged, this, _2)); - if (gSavedSettings.getBOOL("EnableVoiceChat") && !LLVoiceClient::isMutedVoiceInstance()) - { - mBtnVolume->setImageUnselected(LLUI::getUIImage("Audio_Off")); - } - else + if (!gSavedSettings.getBOOL("EnableVoiceChat") && LLAppViewer::instance()->isSecondInstance()) { + // Indicate that second instance started without sound mBtnVolume->setImageUnselected(LLUI::getUIImage("VoiceMute_Off")); } @@ -1138,14 +1134,11 @@ void LLStatusBar::onVolumeChanged(const LLSD& newvalue) void LLStatusBar::onVoiceChanged(const LLSD& newvalue) { - if (newvalue.asBoolean() && !LLVoiceClient::isMutedVoiceInstance()) + if (newvalue.asBoolean()) { + // Second instance starts with "VoiceMute_Off" icon, fix it mBtnVolume->setImageUnselected(LLUI::getUIImage("Audio_Off")); } - else - { - mBtnVolume->setImageUnselected(LLUI::getUIImage("VoiceMute_Off")); - } refresh(); } diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index a61f3014a5..0839133b47 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -571,16 +571,6 @@ void LLVoiceClient::setVoiceEnabled(bool enabled) } } -void LLVoiceClient::unmuteVoiceInstance() -{ - LLVivoxVoiceClient::unmuteVoiceInstance(); -} - -bool LLVoiceClient::isMutedVoiceInstance() -{ - return LLVivoxVoiceClient::isMutedVoiceInstance(); -} - void LLVoiceClient::updateMicMuteLogic() { // If not configured to use PTT, the mic should be open (otherwise the user will be unable to speak). diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index 3ff44a4e76..b4896aba8b 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -432,8 +432,6 @@ public: void toggleUserPTTState(void); void inputUserControlState(bool down); // interpret any sort of up-down mic-open control input according to ptt-toggle prefs void setVoiceEnabled(bool enabled); - static void unmuteVoiceInstance(); - static bool isMutedVoiceInstance(); void setUsePTT(bool usePTT); void setPTTIsToggle(bool PTTIsToggle); diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 73bd5748bc..2ffd83ef54 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -277,7 +277,6 @@ static void killGateway() bool LLVivoxVoiceClient::sShuttingDown = false; bool LLVivoxVoiceClient::sConnected = false; -bool LLVivoxVoiceClient::sVoiceInstanceMuted = false; LLPumpIO *LLVivoxVoiceClient::sPump = nullptr; LLVivoxVoiceClient::LLVivoxVoiceClient() : @@ -356,7 +355,6 @@ LLVivoxVoiceClient::LLVivoxVoiceClient() : sShuttingDown = false; sConnected = false; sPump = nullptr; - sVoiceInstanceMuted = LLAppViewer::instance()->isSecondInstance(); mSpeakerVolume = scale_speaker_volume(0); @@ -5794,15 +5792,14 @@ bool LLVivoxVoiceClient::voiceEnabled(bool no_cache) // Replace frequently called gSavedSettings //return gSavedSettings.getBOOL("EnableVoiceChat") && // !gSavedSettings.getBOOL("CmdLineDisableVoice") && - // !gNonInteractive && - // !sVoiceInstanceMuted; + // !gNonInteractive; if (no_cache) { - return gSavedSettings.getBOOL("EnableVoiceChat") && !gSavedSettings.getBOOL("CmdLineDisableVoice") && !gNonInteractive && !sVoiceInstanceMuted; + return gSavedSettings.getBOOL("EnableVoiceChat") && !gSavedSettings.getBOOL("CmdLineDisableVoice") && !gNonInteractive; } static LLCachedControl sEnableVoiceChat(gSavedSettings, "EnableVoiceChat"); static LLCachedControl sCmdLineDisableVoice(gSavedSettings, "CmdLineDisableVoice"); - return sEnableVoiceChat && !sCmdLineDisableVoice && !gNonInteractive && !sVoiceInstanceMuted; + return sEnableVoiceChat && !sCmdLineDisableVoice && !gNonInteractive; // } // diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index cb88c0c0df..19725849f8 100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h @@ -175,8 +175,6 @@ public: virtual bool voiceEnabled(bool no_cache = false); // virtual void setVoiceEnabled(bool enabled); - static void unmuteVoiceInstance() { sVoiceInstanceMuted = false; } - static bool isMutedVoiceInstance() { return sVoiceInstanceMuted; } virtual BOOL lipSyncEnabled(); virtual void setLipSyncEnabled(BOOL enabled); virtual void setMuteMic(bool muted); // Set the mute state of the local mic. @@ -933,7 +931,6 @@ private: // This variables can last longer than vivox in coroutines so we need them as static static bool sShuttingDown; static bool sConnected; - static bool sVoiceInstanceMuted; // Second+ instance of viewer starts muted static LLPumpIO* sPump; LLEventMailDrop mVivoxPump; diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml index 1766316ed6..6779cdfa03 100644 --- a/indra/newview/skins/default/xui/en/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml @@ -172,7 +172,7 @@ width="20" /> - Muted + width="110"> + Disabled