diff options
| author | Ptolemy <ptolemy@lindenlab.com> | 2020-06-29 18:21:11 -0700 | 
|---|---|---|
| committer | Ptolemy <ptolemy@lindenlab.com> | 2020-06-29 18:21:11 -0700 | 
| commit | 97de9cd465bae1412e38df34a4ab014439948acc (patch) | |
| tree | 09ba540ef9a767c3c9f40e0e289adbed310c2ba1 /indra/newview | |
| parent | 82882d77c41edc3fc3a962ab95ad19fc99604228 (diff) | |
| parent | a9471433eb7d0aa28c3a5b248ad34d3df4c096e7 (diff) | |
Merge branch 'DRTVWR-497' of bitbucket.org:lindenlab/viewer into DRTVWR-497
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/VIEWER_VERSION.txt | 2 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 6 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llpanelprimmediacontrols.cpp | 28 | ||||
| -rw-r--r-- | indra/newview/llpanelprimmediacontrols.h | 1 | ||||
| -rw-r--r-- | indra/newview/lltoolpie.cpp | 21 | ||||
| -rw-r--r-- | indra/newview/lltoolpie.h | 1 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.h | 1 | ||||
| -rw-r--r-- | indra/newview/llviewermediafocus.cpp | 17 | ||||
| -rw-r--r-- | indra/newview/llviewermediafocus.h | 6 | ||||
| -rw-r--r-- | indra/newview/llviewerparcelmedia.cpp | 7 | ||||
| -rwxr-xr-x | indra/newview/viewer_manifest.py | 96 | 
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 ad8a3eebf5..6ca9484fbb 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -130,7 +130,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 @@ -3219,12 +3219,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 57cc13ab3f..32f466ee2b 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 99b54f66d3..ed5dff1600 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 9467a138f0..512c5a8279 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"): | 
