diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp index d8ef5b39adecf94e203f94f22fec83de2c83a54e..f3a2ed94085baa3d6aa31a5ce03052eeb5d81c04 100644 --- a/indra/newview/llpanelnearbymedia.cpp +++ b/indra/newview/llpanelnearbymedia.cpp @@ -1168,12 +1168,12 @@ void LLPanelNearByMedia::onClickSelectedMediaMute() F32 volume = impl->getVolume(); if(volume > 0.0) { - impl->setVolume(0.0); + impl->setMute(true); } else if (mVolumeSlider->getValueF32() == 0.0) { - impl->setVolume(1.0); - mVolumeSlider->setValue(1.0); + impl->setMute(false); + mVolumeSlider->setValue(impl->getVolume()); } else { diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 4334cbfda33f2f12cc5b9c5b4f59f715d91d79b5..22a21c9ca3c60e3d0144804c93c3cf15bdc31daa 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1555,6 +1555,7 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, mNavigateServerRequest(false), mMediaSourceFailed(false), mRequestedVolume(1.0f), + mPreviousVolume(1.0f), mIsMuted(false), mNeedsMuteCheck(false), mPreviousMediaState(MEDIA_NONE), @@ -2081,6 +2082,20 @@ void LLViewerMediaImpl::setVolume(F32 volume) updateVolume(); } +////////////////////////////////////////////////////////////////////////////////////////// +void LLViewerMediaImpl::setMute(bool mute) +{ + if (mute) + { + mPreviousVolume = mRequestedVolume; + setVolume(0.0); + } + else + { + setVolume(mPreviousVolume); + } +} + ////////////////////////////////////////////////////////////////////////////////////////// void LLViewerMediaImpl::updateVolume() { diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index c52960dfcfe85e8e58625f6e905d7c52e61ff572..e2e758befb6df2a59946f55cae1671100075c6b3 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -216,6 +216,7 @@ class LLViewerMediaImpl void skipBack(F32 step_scale); void skipForward(F32 step_scale); void setVolume(F32 volume); + void setMute(bool mute); void updateVolume(); F32 getVolume(); void focus(bool focus); @@ -448,6 +449,7 @@ class LLViewerMediaImpl bool mNavigateServerRequest; bool mMediaSourceFailed; F32 mRequestedVolume; + F32 mPreviousVolume; bool mIsMuted; bool mNeedsMuteCheck; int mPreviousMediaState;