diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/cmake/Copy3rdPartyLibs.cmake | 5 | ||||
| -rw-r--r-- | indra/media_plugins/cef/CMakeLists.txt | 20 | ||||
| -rw-r--r-- | indra/media_plugins/cef/mac_volume_catcher_null.cpp | 95 | ||||
| -rw-r--r-- | indra/media_plugins/cef/media_plugin_cef.cpp | 17 | ||||
| -rwxr-xr-x | indra/newview/viewer_manifest.py | 4 | 
5 files changed, 130 insertions, 11 deletions
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index c7fb7a5301..43188673eb 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -67,8 +67,9 @@ if(WINDOWS)      endif (MSVC80)      # try to copy VS2010 redist independently of system version -    list(APPEND LMSVC_VER 100) -    list(APPEND LMSVC_VERDOT 10.0) +    # maint-7360 CP +    # list(APPEND LMSVC_VER 100) +    # list(APPEND LMSVC_VERDOT 10.0)      list(LENGTH LMSVC_VER count)      math(EXPR count "${count}-1") diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 201fb44847..5452fd9d1e 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -46,6 +46,10 @@ set(media_plugin_cef_SOURCE_FILES      media_plugin_cef.cpp      ) +set(media_plugin_cef_HEADER_FILES +    volume_catcher.h +    ) +  set (media_plugin_cef_LINK_LIBRARIES    ${LLPLUGIN_LIBRARIES}    ${MEDIA_PLUGIN_BASE_LIBRARIES} @@ -53,7 +57,21 @@ set (media_plugin_cef_LINK_LIBRARIES    ${LLCOMMON_LIBRARIES}    ${PLUGIN_API_WINDOWS_LIBRARIES}) - +# Select which VolumeCatcher implementation to use +if (LINUX) +  message(FATAL_ERROR "CEF plugin has been enabled for a Linux compile.\n" +    "  Please create a volume_catcher implementation for this platform.") +elseif (DARWIN) +  list(APPEND media_plugin_cef_SOURCE_FILES mac_volume_catcher_null.cpp) +  find_library(CORESERVICES_LIBRARY CoreServices) +  find_library(AUDIOUNIT_LIBRARY AudioUnit) +  list(APPEND media_plugin_cef_LINK_LIBRARIES +       ${CORESERVICES_LIBRARY}     # for Component Manager calls +       ${AUDIOUNIT_LIBRARY}        # for AudioUnit calls +       ) +elseif (WINDOWS) +  list(APPEND media_plugin_cef_SOURCE_FILES windows_volume_catcher.cpp) +endif (LINUX)  set_source_files_properties(${media_plugin_cef_HEADER_FILES}                              PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/indra/media_plugins/cef/mac_volume_catcher_null.cpp b/indra/media_plugins/cef/mac_volume_catcher_null.cpp new file mode 100644 index 0000000000..f4fcef71aa --- /dev/null +++ b/indra/media_plugins/cef/mac_volume_catcher_null.cpp @@ -0,0 +1,95 @@ +/**  + * @file windows_volume_catcher.cpp + * @brief A null implementation of volume level control of all audio channels opened by a process. + *        We are using this for the macOS version for now until we can understand how to make the  + *        exitising mac_volume_catcher.cpp work without the (now, non-existant) QuickTime dependency + * + * @cond + * $LicenseInfo:firstyear=2010&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + * @endcond + */ + +#include "volume_catcher.h" +#include "llsingleton.h" +class VolumeCatcherImpl : public LLSingleton<VolumeCatcherImpl> +{ +	LLSINGLETON(VolumeCatcherImpl); +	// This is a singleton class -- both callers and the component implementation should use getInstance() to find the instance. +	~VolumeCatcherImpl(); + +public: + +	void setVolume(F32 volume); +	void setPan(F32 pan); +	 +private: +	F32 	mVolume; +	F32 	mPan; +	bool mSystemIsVistaOrHigher; +}; + +VolumeCatcherImpl::VolumeCatcherImpl() +:	mVolume(1.0f),			// default volume is max +	mPan(0.f)				// default pan is centered +{ +} + +VolumeCatcherImpl::~VolumeCatcherImpl() +{ +} + +void VolumeCatcherImpl::setVolume(F32 volume) +{ +	mVolume = volume; +} + +void VolumeCatcherImpl::setPan(F32 pan) +{	// remember pan for calculating individual channel levels later +	mPan = pan; +} + +///////////////////////////////////////////////////// + +VolumeCatcher::VolumeCatcher() +{ +	pimpl = VolumeCatcherImpl::getInstance(); +} + +VolumeCatcher::~VolumeCatcher() +{ +	// Let the instance persist until exit. +} + +void VolumeCatcher::setVolume(F32 volume) +{ +	pimpl->setVolume(volume); +} + +void VolumeCatcher::setPan(F32 pan) +{ +	pimpl->setPan(pan); +} + +void VolumeCatcher::pump() +{ +	// No periodic tasks are necessary for this implementation. +} diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 69717be91f..796e262d6f 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -34,6 +34,7 @@  #include "llplugininstance.h"  #include "llpluginmessage.h"  #include "llpluginmessageclasses.h" +#include "volume_catcher.h"  #include "media_plugin_base.h"  #include <functional> @@ -77,7 +78,7 @@ private:  	void unicodeInput(LLSD native_key_data);  	void checkEditState(); -    void setVolume(F32 vol); +    void setVolume();  	bool mEnableMediaPluginDebugging;  	std::string mHostLanguage; @@ -95,6 +96,8 @@ private:  	std::string mCachePath;  	std::string mCookiePath;  	std::string mPickedFile; +	VolumeCatcher mVolumeCatcher; +	F32 mCurVolume;  	dullahan* mCEFLib;  }; @@ -123,8 +126,11 @@ MediaPluginBase(host_send_func, host_user_data)  	mCachePath = "";  	mCookiePath = "";  	mPickedFile = ""; +	mCurVolume = 0.0; +  	mCEFLib = new dullahan(); +	setVolume();  }  //////////////////////////////////////////////////////////////////////////////// @@ -452,6 +458,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)  				settings.flip_mouse_y = false;  				settings.flip_pixels_y = true;  				settings.frame_rate = 60; +				settings.force_wave_audio = true;  				settings.initial_height = 1024;  				settings.initial_width = 1024;  				settings.java_enabled = false; @@ -713,8 +720,9 @@ void MediaPluginCEF::receiveMessage(const char* message_string)          {              if (message_name == "set_volume")              { -                F32 volume = (F32)message_in.getValueReal("volume"); -                setVolume(volume); +				F32 volume = (F32)message_in.getValueReal("volume"); +				mCurVolume = volume; +                setVolume();              }          }          else @@ -793,8 +801,9 @@ void MediaPluginCEF::checkEditState()  	}  } -void MediaPluginCEF::setVolume(F32 vol) +void MediaPluginCEF::setVolume()  { +	mVolumeCatcher.setVolume(mCurVolume);  }  //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 11769c59a8..142951da25 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -391,13 +391,9 @@ class WindowsManifest(ViewerManifest):              if self.args['configuration'].lower() == 'debug':                   self.path("msvcr120d.dll")                   self.path("msvcp120d.dll") -                 self.path("msvcr100d.dll") -                 self.path("msvcp100d.dll")              else:                   self.path("msvcr120.dll")                   self.path("msvcp120.dll") -                 self.path("msvcr100.dll") -                 self.path("msvcp100.dll")              # Vivox runtimes              self.path("SLVoice.exe")  | 
