summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorAndrey Lihatskiy <alihatskiy@productengine.com>2020-06-23 23:58:52 +0300
committerAndrey Lihatskiy <alihatskiy@productengine.com>2020-06-23 23:58:52 +0300
commit05f3287512557cd4cb41de7a8fe3f5171a48481d (patch)
treef43de01e3c874ba335862dff364e4b0082563dd7 /indra/newview
parentf8137f68a0f157c7dc7766a695a62d59b4198291 (diff)
parentc0087286e78098ee246ea821aefb5686ab8bda78 (diff)
Merge branch 'master' into DRTVWR-501-maint
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/VIEWER_VERSION.txt2
-rw-r--r--indra/newview/app_settings/settings.xml6
-rw-r--r--indra/newview/llappviewer.cpp10
-rw-r--r--indra/newview/llpanelprimmediacontrols.cpp28
-rw-r--r--indra/newview/llpanelprimmediacontrols.h1
-rw-r--r--indra/newview/lltoolpie.cpp21
-rw-r--r--indra/newview/lltoolpie.h1
-rw-r--r--indra/newview/llviewermedia.cpp12
-rw-r--r--indra/newview/llviewermedia.h1
-rw-r--r--indra/newview/llviewermediafocus.cpp17
-rw-r--r--indra/newview/llviewermediafocus.h6
-rw-r--r--indra/newview/llviewerparcelmedia.cpp7
-rwxr-xr-xindra/newview/viewer_manifest.py96
13 files changed, 149 insertions, 59 deletions
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index 49df80bfeb..7d765dabde 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-6.4.4
+6.4.5
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index e8f01f7a60..dfc3c7b89d 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8434,7 +8434,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>0.125</real>
+ <real>0.02</real>
</map>
<key>MediaRollOffMin</key>
<map>
@@ -8445,7 +8445,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>10.0</real>
+ <real>40.0</real>
</map>
<key>MediaRollOffMax</key>
<map>
@@ -8456,7 +8456,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>30.0</real>
+ <real>80.0</real>
</map>
<key>RecentItemsSortOrder</key>
<map>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 59fc3500d9..d2b7c9d85e 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -129,7 +129,7 @@
#include "llcoros.h"
#include "llexception.h"
#if !LL_LINUX
-#include "cef/dullahan.h"
+#include "cef/dullahan_version.h"
#include "vlc/libvlc_version.h"
#endif // LL_LINUX
@@ -3221,12 +3221,16 @@ LLSD LLAppViewer::getViewerInfo() const
cef_ver_codec << ".";
cef_ver_codec << DULLAHAN_VERSION_MINOR;
cef_ver_codec << ".";
+ cef_ver_codec << DULLAHAN_VERSION_POINT;
+ cef_ver_codec << ".";
cef_ver_codec << DULLAHAN_VERSION_BUILD;
- cef_ver_codec << " / CEF: ";
+ cef_ver_codec << std::endl;
+ cef_ver_codec << " CEF: ";
cef_ver_codec << CEF_VERSION;
- cef_ver_codec << " / Chromium: ";
+ cef_ver_codec << std::endl;
+ cef_ver_codec << " Chromium: ";
cef_ver_codec << CHROME_VERSION_MAJOR;
cef_ver_codec << ".";
cef_ver_codec << CHROME_VERSION_MINOR;
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index 6e61584d33..55c84815aa 100644
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -829,8 +829,32 @@ void LLPanelPrimMediaControls::draw()
BOOL LLPanelPrimMediaControls::handleScrollWheel(S32 x, S32 y, S32 clicks)
{
- mInactivityTimer.start();
- return LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks);
+ mInactivityTimer.start();
+ BOOL res = FALSE;
+
+ // Unlike other mouse events, we need to handle scroll here otherwise
+ // it will be intercepted by camera and won't reach toolpie
+ if (LLViewerMediaFocus::getInstance()->isHoveringOverFocused())
+ {
+ // either let toolpie handle this or expose mHoverPick.mUVCoords in some way
+ res = LLToolPie::getInstance()->handleScrollWheel(x, y, clicks);
+ }
+
+ return res;
+}
+
+BOOL LLPanelPrimMediaControls::handleScrollHWheel(S32 x, S32 y, S32 clicks)
+{
+ mInactivityTimer.start();
+ BOOL res = FALSE;
+
+ if (LLViewerMediaFocus::getInstance()->isHoveringOverFocused())
+ {
+ // either let toolpie handle this or expose mHoverPick.mUVCoords in some way
+ res = LLToolPie::getInstance()->handleScrollHWheel(x, y, clicks);
+ }
+
+ return res;
}
BOOL LLPanelPrimMediaControls::handleMouseDown(S32 x, S32 y, MASK mask)
diff --git a/indra/newview/llpanelprimmediacontrols.h b/indra/newview/llpanelprimmediacontrols.h
index 21d5236074..d4301aaf7c 100644
--- a/indra/newview/llpanelprimmediacontrols.h
+++ b/indra/newview/llpanelprimmediacontrols.h
@@ -48,6 +48,7 @@ public:
/*virtual*/ BOOL postBuild();
virtual void draw();
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
+ virtual BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks);
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index aeb8bdc496..f499c34ca4 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -203,14 +203,31 @@ BOOL LLToolPie::handleRightMouseUp(S32 x, S32 y, MASK mask)
return LLTool::handleRightMouseUp(x, y, mask);
}
+BOOL LLToolPie::handleScrollWheelAny(S32 x, S32 y, S32 clicks_x, S32 clicks_y)
+{
+ BOOL res = FALSE;
+ // mHoverPick should have updated on its own and we should have a face
+ // in LLViewerMediaFocus in case of media, so just reuse mHoverPick
+ if (mHoverPick.mUVCoords.mV[VX] >= 0.f && mHoverPick.mUVCoords.mV[VY] >= 0.f)
+ {
+ res = LLViewerMediaFocus::getInstance()->handleScrollWheel(mHoverPick.mUVCoords, clicks_x, clicks_y);
+ }
+ else
+ {
+ // this won't provide correct coordinates in case of object selection
+ res = LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks_x, clicks_y);
+ }
+ return res;
+}
+
BOOL LLToolPie::handleScrollWheel(S32 x, S32 y, S32 clicks)
{
- return LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks);
+ return handleScrollWheelAny(x, y, 0, clicks);
}
BOOL LLToolPie::handleScrollHWheel(S32 x, S32 y, S32 clicks)
{
- return LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks);
+ return handleScrollWheelAny(x, y, clicks, 0);
}
// True if you selected an object.
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
index fe0acfe473..2d6c22f425 100644
--- a/indra/newview/lltoolpie.h
+++ b/indra/newview/lltoolpie.h
@@ -49,6 +49,7 @@ public:
virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
virtual BOOL handleHover(S32 x, S32 y, MASK mask);
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
+ BOOL handleScrollWheelAny(S32 x, S32 y, S32 clicks_x, S32 clicks_y);
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
virtual BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks);
virtual BOOL handleToolTip(S32 x, S32 y, MASK mask);
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 700462ad75..79081f3e02 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -2294,6 +2294,18 @@ void LLViewerMediaImpl::mouseDoubleClick(S32 x, S32 y, MASK mask, S32 button)
}
//////////////////////////////////////////////////////////////////////////////////////////
+void LLViewerMediaImpl::scrollWheel(const LLVector2& texture_coords, S32 scroll_x, S32 scroll_y, MASK mask)
+{
+ if (mMediaSource)
+ {
+ S32 x, y;
+ scaleTextureCoords(texture_coords, &x, &y);
+
+ scrollWheel(x, y, scroll_x, scroll_y, mask);
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
void LLViewerMediaImpl::scrollWheel(S32 x, S32 y, S32 scroll_x, S32 scroll_y, MASK mask)
{
scaleMouse(&x, &y);
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index a5cde35c88..8bf1ad2441 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -235,6 +235,7 @@ public:
void mouseMove(const LLVector2& texture_coords, MASK mask);
void mouseDoubleClick(const LLVector2& texture_coords, MASK mask);
void mouseDoubleClick(S32 x, S32 y, MASK mask, S32 button = 0);
+ void scrollWheel(const LLVector2& texture_coords, S32 scroll_x, S32 scroll_y, MASK mask);
void scrollWheel(S32 x, S32 y, S32 scroll_x, S32 scroll_y, MASK mask);
void mouseCapture();
diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp
index 69ab0a71af..71ae7bfbc3 100644
--- a/indra/newview/llviewermediafocus.cpp
+++ b/indra/newview/llviewermediafocus.cpp
@@ -371,13 +371,26 @@ BOOL LLViewerMediaFocus::handleUnicodeChar(llwchar uni_char, BOOL called_from_pa
media_impl->handleUnicodeCharHere(uni_char);
return true;
}
-BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks)
+
+BOOL LLViewerMediaFocus::handleScrollWheel(const LLVector2& texture_coords, S32 clicks_x, S32 clicks_y)
+{
+ BOOL retval = FALSE;
+ LLViewerMediaImpl* media_impl = getFocusedMediaImpl();
+ if (media_impl && media_impl->hasMedia())
+ {
+ media_impl->scrollWheel(texture_coords, clicks_x, clicks_y, gKeyboard->currentMask(TRUE));
+ retval = TRUE;
+ }
+ return retval;
+}
+
+BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks_x, S32 clicks_y)
{
BOOL retval = FALSE;
LLViewerMediaImpl* media_impl = getFocusedMediaImpl();
if(media_impl && media_impl->hasMedia())
{
- media_impl->scrollWheel(x, y, 0, clicks, gKeyboard->currentMask(TRUE));
+ media_impl->scrollWheel(x, y, clicks_x, clicks_y, gKeyboard->currentMask(TRUE));
retval = TRUE;
}
return retval;
diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h
index 763a6c1688..fa469c36e3 100644
--- a/indra/newview/llviewermediafocus.h
+++ b/indra/newview/llviewermediafocus.h
@@ -58,7 +58,8 @@ public:
/*virtual*/ BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
/*virtual*/ BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent);
/*virtual*/ BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent);
- BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
+ BOOL handleScrollWheel(const LLVector2& texture_coords, S32 clicks_x, S32 clicks_y);
+ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks_x, S32 clicks_y);
void update();
@@ -67,7 +68,8 @@ public:
bool isFocusedOnFace(LLPointer<LLViewerObject> objectp, S32 face);
bool isHoveringOverFace(LLPointer<LLViewerObject> objectp, S32 face);
-
+ bool isHoveringOverFocused() { return mFocusedObjectID == mHoverObjectID && mFocusedObjectFace == mHoverObjectFace; };
+
// These look up (by uuid) and return the values that were set with setFocusFace. They will return null if the objects have been destroyed.
LLViewerMediaImpl* getFocusedMediaImpl();
LLViewerObject* getFocusedObject();
diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp
index b1b5275f82..0cdd447fcd 100644
--- a/indra/newview/llviewerparcelmedia.cpp
+++ b/indra/newview/llviewerparcelmedia.cpp
@@ -102,6 +102,7 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
if(mMediaImpl.isNull())
{
+ play(parcel);
return;
}
@@ -158,6 +159,12 @@ void LLViewerParcelMedia::play(LLParcel* parcel)
if (!gSavedSettings.getBOOL("AudioStreamingMedia"))
return;
+ // This test appears all over the code and really should be facotred out into a single
+ // call that returns true/false (with option ask dialog) but that is outside of scope
+ // for this work so we'll just directly.
+ if (gSavedSettings.getS32("ParcelMediaAutoPlayEnable") == 0 )
+ return;
+
std::string media_url = parcel->getMediaURL();
std::string media_current_url = parcel->getMediaCurrentURL();
std::string mime_type = parcel->getMediaType();
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 4d6d75659f..b385717dbe 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -594,13 +594,11 @@ class WindowsManifest(ViewerManifest):
config = 'debug' if self.args['configuration'].lower() == 'debug' else 'release'
with self.prefix(src=os.path.join(pkgdir, 'bin', config)):
self.path("chrome_elf.dll")
- self.path("d3dcompiler_43.dll")
self.path("d3dcompiler_47.dll")
self.path("libcef.dll")
self.path("libEGL.dll")
self.path("libGLESv2.dll")
self.path("dullahan_host.exe")
- self.path("natives_blob.bin")
self.path("snapshot_blob.bin")
self.path("v8_context_snapshot.bin")
@@ -795,6 +793,7 @@ class WindowsManifest(ViewerManifest):
for exe in (
self.final_exe(),
"SLVersionChecker.exe",
+ "llplugin/dullahan_host.exe",
):
self.sign(exe)
@@ -828,13 +827,13 @@ class WindowsManifest(ViewerManifest):
def sign(self, exe):
sign_py = os.environ.get('SIGN', r'C:\buildscripts\code-signing\sign.py')
- python = os.environ.get('PYTHON', 'python')
+ python = os.environ.get('PYTHON', sys.executable)
if os.path.exists(sign_py):
dst_path = self.dst_path_of(exe)
print "about to run signing of: ", dst_path
self.run_command([python, sign_py, dst_path])
else:
- print "Skipping code signing of %s: %s not found" % (exe, sign_py)
+ print "Skipping code signing of %s %s: %s not found" % (self.dst_path_of(exe), exe, sign_py)
def escape_slashes(self, path):
return path.replace('\\', '\\\\\\\\')
@@ -1105,46 +1104,55 @@ class DarwinManifest(ViewerManifest):
# $viewer_app/Contents/Frameworks/Chromium Embedded Framework.framework
SLPlugin_framework = self.relsymlinkf(CEF_framework, catch=False)
- # copy DullahanHelper.app
- self.path2basename(relpkgdir, 'DullahanHelper.app')
-
- # and fix that up with a Frameworks/CEF symlink too
- with self.prefix(dst=os.path.join(
- 'DullahanHelper.app', 'Contents', 'Frameworks')):
- # from Dullahan Helper.app/Contents/Frameworks/Chromium Embedded
- # Framework.framework back to
- # SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework
- # Since SLPlugin_framework is itself a
- # symlink, don't let relsymlinkf() resolve --
- # explicitly call relpath(symlink=True) and
- # create that symlink here.
- DullahanHelper_framework = \
- self.symlinkf(self.relpath(SLPlugin_framework, symlink=True),
- catch=False)
-
- # change_command includes install_name_tool, the
- # -change subcommand and the old framework rpath
- # stamped into the executable. To use it with
- # run_command(), we must still append the new
- # framework path and the pathname of the
- # executable to change.
- change_command = [
- 'install_name_tool', '-change',
- '@rpath/Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework']
-
- with self.prefix(dst=os.path.join(
- 'DullahanHelper.app', 'Contents', 'MacOS')):
- # Now self.get_dst_prefix() is, at runtime,
- # @executable_path. Locate the helper app
- # framework (which is a symlink) from here.
- newpath = os.path.join(
- '@executable_path',
- self.relpath(DullahanHelper_framework, symlink=True),
- frameworkname)
- # and restamp the DullahanHelper executable
- self.run_command(
- change_command +
- [newpath, self.dst_path_of('DullahanHelper')])
+ # for all the multiple CEF/Dullahan (as of CEF 76) helper app bundles we need:
+ for helper in (
+ "DullahanHelper",
+ "DullahanHelper (GPU)",
+ "DullahanHelper (Renderer)",
+ "DullahanHelper (Plugin)",
+ ):
+ # app is the directory name of the app bundle, with app/Contents/MacOS/helper as the executable
+ app = helper + ".app"
+
+ # copy DullahanHelper.app
+ self.path2basename(relpkgdir, app)
+
+ # and fix that up with a Frameworks/CEF symlink too
+ with self.prefix(dst=os.path.join(
+ app, 'Contents', 'Frameworks')):
+ # from Dullahan Helper *.app/Contents/Frameworks/Chromium Embedded
+ # Framework.framework back to
+ # SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework
+ # Since SLPlugin_framework is itself a
+ # symlink, don't let relsymlinkf() resolve --
+ # explicitly call relpath(symlink=True) and
+ # create that symlink here.
+ helper_framework = \
+ self.symlinkf(self.relpath(SLPlugin_framework, symlink=True), catch=False)
+
+ # change_command includes install_name_tool, the
+ # -change subcommand and the old framework rpath
+ # stamped into the executable. To use it with
+ # run_command(), we must still append the new
+ # framework path and the pathname of the
+ # executable to change.
+ change_command = [
+ 'install_name_tool', '-change',
+ '@rpath/Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework']
+
+ with self.prefix(dst=os.path.join(
+ app, 'Contents', 'MacOS')):
+ # Now self.get_dst_prefix() is, at runtime,
+ # @executable_path. Locate the helper app
+ # framework (which is a symlink) from here.
+ newpath = os.path.join(
+ '@executable_path',
+ self.relpath(helper_framework, symlink=True),
+ frameworkname)
+ # and restamp the Dullahan Helper executable itself
+ self.run_command(
+ change_command +
+ [newpath, self.dst_path_of(helper)])
# SLPlugin plugins
with self.prefix(dst="llplugin"):