summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCallum Prentice <callum@gmail.com>2017-04-27 18:04:00 -0700
committerCallum Prentice <callum@gmail.com>2017-04-27 18:04:00 -0700
commit8f95d9ad6e4a5eb9d0556adb89eef613458f7c72 (patch)
treea84ee01b86457bd84e19ed0af3e265fddf32d9a0
parent89c172993a9350091c8907845a3602ab50f194c5 (diff)
FIX for MAINT-6950 Shared media a great distance away (different region even) sometimes plays at maximum volume when entering a region or moving camera slightly.
-rw-r--r--indra/media_plugins/cef/CMakeLists.txt8
-rw-r--r--indra/media_plugins/cef/media_plugin_cef.cpp17
2 files changed, 20 insertions, 5 deletions
diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt
index 201fb44847..be3cec19c6 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,9 @@ set (media_plugin_cef_LINK_LIBRARIES
${LLCOMMON_LIBRARIES}
${PLUGIN_API_WINDOWS_LIBRARIES})
-
+if (WINDOWS)
+ list(APPEND media_plugin_cef_SOURCE_FILES windows_volume_catcher.cpp)
+endif (WINDOWS)
set_source_files_properties(${media_plugin_cef_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
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);
}
////////////////////////////////////////////////////////////////////////////////