From 9c789283111ef0eaf0944b30d3c024926f88de42 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Tue, 28 Apr 2020 10:57:17 -0700 Subject: [PATCH 01/27] Initial port of the changes from DRTVWR509 (Adult Swim) minus the volume fall-off settings updates --- README.md | 1 - autobuild.xml | 14 +-- indra/llplugin/llpluginclassmedia.cpp | 4 + indra/media_plugins/cef/media_plugin_cef.cpp | 42 +++++++-- indra/newview/llappviewer.cpp | 8 +- indra/newview/lllogininstance.cpp | 2 +- indra/newview/llviewerparcelmedia.cpp | 1 + indra/newview/viewer_manifest.py | 94 +++++++++++--------- 8 files changed, 105 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index 781501178a..e4078770f3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ Second Life Viewer ==================== - This project manages the source code for the [Second Life](https://www.secondlife.com) Viewer. diff --git a/autobuild.xml b/autobuild.xml index 1f1db48bdc..7473e48609 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@ archive hash - 23aeaf23e7db2484a1850017141860dd + 54f4c6114a65989922d007e96b141c79 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/34069/283470/dullahan-1.1.1320_3.3626.1895.g7001d56-darwin64-525361.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/57853/540250/dullahan-1.5.2.202004232113_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-540886.tar.bz2 name darwin64 @@ -592,9 +592,9 @@ archive hash - 71fa66203326aca918796e874976c080 + 31e5520d553be76718c661523585bda7 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/34070/283477/dullahan-1.1.1320_3.3626.1895.g7001d56-windows-525361.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/57855/540261/dullahan-1.5.2.202004240417_81.2.17_gb382c62_chromium-81.0.4044.113-windows-540886.tar.bz2 name windows @@ -604,16 +604,16 @@ archive hash - c7162e4805f50a3609f5dc63d0cf2bc0 + 869560b9b78f30e936687dd07dafc38e url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/34071/283480/dullahan-1.1.1320_3.3626.1895.g7001d56-windows64-525361.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/57854/540264/dullahan-1.5.2.202004240417_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-540886.tar.bz2 name windows64 version - 1.1.1320_3.3626.1895.g7001d56 + 1.5.2.202004240417_81.2.17_gb382c62_chromium-81.0.4044.113 elfio diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 85197d1272..58069afdf9 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -1138,6 +1138,10 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) mDebugMessageLevel = message.getValue("message_level"); mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_DEBUG_MESSAGE); } + else if (message_name == "tooltip_text") + { + mHoverText = message.getValue("tooltip"); + } else { LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL; diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index cff21b13c4..bc967c9bca 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -62,6 +62,7 @@ private: void onConsoleMessageCallback(std::string message, std::string source, int line); void onStatusMessageCallback(std::string value); void onTitleChangeCallback(std::string title); + void onTooltipCallback(std::string text); void onLoadStartCallback(); void onRequestExitCallback(); void onLoadEndCallback(int httpStatusCode); @@ -71,6 +72,7 @@ private: bool onHTTPAuthCallback(const std::string host, const std::string realm, std::string& username, std::string& password); void onCursorChangedCallback(dullahan::ECursorType type); const std::vector onFileDialog(dullahan::EFileDialogType dialog_type, const std::string dialog_title, const std::string default_file, const std::string dialog_accept_filter, bool& use_default); + bool onJSDialogCallback(const std::string origin_url, const std::string message_text, const std::string default_prompt_text); void postDebugMessage(const std::string& msg); void authResponse(LLPluginMessage &message); @@ -87,6 +89,8 @@ private: bool mPluginsEnabled; bool mJavascriptEnabled; bool mDisableGPU; + bool mDisableNetworkService; + bool mUseMockKeyChain; std::string mUserAgentSubtring; std::string mAuthUsername; std::string mAuthPassword; @@ -95,7 +99,6 @@ private: bool mCanCopy; bool mCanPaste; std::string mCachePath; - std::string mCookiePath; std::string mCefLogFile; bool mCefLogVerbose; std::vector mPickedFiles; @@ -119,6 +122,8 @@ MediaPluginBase(host_send_func, host_user_data) mPluginsEnabled = false; mJavascriptEnabled = true; mDisableGPU = false; + mDisableNetworkService = true; + mUseMockKeyChain = true; mUserAgentSubtring = ""; mAuthUsername = ""; mAuthPassword = ""; @@ -127,7 +132,6 @@ MediaPluginBase(host_send_func, host_user_data) mCanCopy = false; mCanPaste = false; mCachePath = ""; - mCookiePath = ""; mCefLogFile = ""; mCefLogVerbose = false; mPickedFiles.clear(); @@ -208,6 +212,12 @@ void MediaPluginCEF::onTitleChangeCallback(std::string title) sendMessage(message); } +void MediaPluginCEF::onTooltipCallback(std::string text) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "tooltip_text"); + message.setValue("tooltip", text); + sendMessage(message); +} //////////////////////////////////////////////////////////////////////////////// // void MediaPluginCEF::onLoadStartCallback() @@ -355,6 +365,14 @@ const std::vector MediaPluginCEF::onFileDialog(dullahan::EFileDialo return std::vector(); } +//////////////////////////////////////////////////////////////////////////////// +// +bool MediaPluginCEF::onJSDialogCallback(const std::string origin_url, const std::string message_text, const std::string default_prompt_text) +{ + // return true indicates we suppress the JavaScript alert UI entirely + return true; +} + //////////////////////////////////////////////////////////////////////////////// // void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type) @@ -431,6 +449,8 @@ void MediaPluginCEF::receiveMessage(const char* message_string) { mCEFLib->update(); + mVolumeCatcher.pump(); + // this seems bad but unless the state changes (it won't until we figure out // how to get CEF to tell us if copy/cut/paste is available) then this function // will return immediately @@ -491,6 +511,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string) mCEFLib->setOnConsoleMessageCallback(std::bind(&MediaPluginCEF::onConsoleMessageCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); mCEFLib->setOnStatusMessageCallback(std::bind(&MediaPluginCEF::onStatusMessageCallback, this, std::placeholders::_1)); mCEFLib->setOnTitleChangeCallback(std::bind(&MediaPluginCEF::onTitleChangeCallback, this, std::placeholders::_1)); + mCEFLib->setOnTooltipCallback(std::bind(&MediaPluginCEF::onTooltipCallback, this, std::placeholders::_1)); mCEFLib->setOnLoadStartCallback(std::bind(&MediaPluginCEF::onLoadStartCallback, this)); mCEFLib->setOnLoadEndCallback(std::bind(&MediaPluginCEF::onLoadEndCallback, this, std::placeholders::_1)); mCEFLib->setOnLoadErrorCallback(std::bind(&MediaPluginCEF::onLoadError, this, std::placeholders::_1, std::placeholders::_2)); @@ -500,15 +521,19 @@ void MediaPluginCEF::receiveMessage(const char* message_string) mCEFLib->setOnFileDialogCallback(std::bind(&MediaPluginCEF::onFileDialog, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5)); mCEFLib->setOnCursorChangedCallback(std::bind(&MediaPluginCEF::onCursorChangedCallback, this, std::placeholders::_1)); mCEFLib->setOnRequestExitCallback(std::bind(&MediaPluginCEF::onRequestExitCallback, this)); - + mCEFLib->setOnJSDialogCallback(std::bind(&MediaPluginCEF::onJSDialogCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); + dullahan::dullahan_settings settings; settings.accept_language_list = mHostLanguage; settings.background_color = 0xffffffff; settings.cache_enabled = true; settings.cache_path = mCachePath; - settings.cookie_store_path = mCookiePath; settings.cookies_enabled = mCookiesEnabled; settings.disable_gpu = mDisableGPU; +#if LL_DARWIN + settings.disable_network_service = mDisableNetworkService; + settings.use_mock_keychain = mUseMockKeyChain; +#endif settings.flash_enabled = mPluginsEnabled; settings.flip_mouse_y = false; settings.flip_pixels_y = true; @@ -561,7 +586,6 @@ void MediaPluginCEF::receiveMessage(const char* message_string) std::string user_data_path_cookies = message_in.getValue("cookies_path"); mCachePath = user_data_path_cache + "cef_cache"; - mCookiePath = user_data_path_cookies + "cef_cookies"; mCefLogFile = message_in.getValue("cef_log_file"); mCefLogVerbose = message_in.getValueBoolean("cef_verbose_log"); } @@ -661,8 +685,9 @@ void MediaPluginCEF::receiveMessage(const char* message_string) else if (message_name == "scroll_event") { // Mouse coordinates for cef to be able to scroll 'containers' - //S32 x = message_in.getValueS32("x"); - //S32 y = message_in.getValueS32("y"); + S32 x = message_in.getValueS32("x"); + S32 y = message_in.getValueS32("y"); + // Wheel's clicks S32 delta_x = message_in.getValueS32("clicks_x"); S32 delta_y = message_in.getValueS32("clicks_y"); @@ -670,8 +695,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string) delta_x *= -scaling_factor; delta_y *= -scaling_factor; - // mCEFLib->mouseWheel(x, y, delta_x, delta_y); - mCEFLib->mouseWheel(delta_x, delta_y); + mCEFLib->mouseWheel(x, y, delta_x, delta_y); } else if (message_name == "text_event") { diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index cbb47d71f7..55728bc366 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3211,12 +3211,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/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 8a69acb8dc..873531ef22 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -62,7 +62,7 @@ #include #include -const S32 LOGIN_MAX_RETRIES = 3; +const S32 LOGIN_MAX_RETRIES = 0; // Viewer should not autmatically retry login const F32 LOGIN_SRV_TIMEOUT_MIN = 10; const F32 LOGIN_SRV_TIMEOUT_MAX = 120; const F32 LOGIN_DNS_TIMEOUT_FACTOR = 0.9; // make DNS wait shorter then retry time diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index b1b5275f82..4713ed4167 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; } diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index a403760670..60f980fb56 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -489,6 +489,10 @@ class WindowsManifest(ViewerManifest): # include the compiled launcher scripts so that it gets included in the file_list self.path('SLVersionChecker.exe') + with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')): + # include the dullahan host process so we can code sign it later + self.path('dullahan_host.exe') + with self.prefix(dst="vmp_icons"): with self.prefix(src=self.icon_path()): self.path("secondlife.ico") @@ -593,13 +597,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") @@ -794,6 +796,7 @@ class WindowsManifest(ViewerManifest): for exe in ( self.final_exe(), "SLVersionChecker.exe", + "llplugin/dullahan_host.exe", ): self.sign(exe) @@ -827,13 +830,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('\\', '\\\\\\\\') @@ -1103,46 +1106,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') + # 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" - # 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) + # copy DullahanHelper.app + self.path2basename(relpkgdir, app) - # 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'] + # 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) - 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')]) + # 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"): From 013f7c9c92af80ae54a6bbc955ab0ce9ac37255f Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Tue, 28 Apr 2020 13:39:37 -0700 Subject: [PATCH 02/27] Pull in this viewers version of Dullanan (and CEF) - identical to DRTVWR-509 (aduly swim) for now but will evolve --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 7473e48609..d2b51b4efa 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@ archive hash - 54f4c6114a65989922d007e96b141c79 + a4b720549715fd95e7e0c5c2813abab4 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/57853/540250/dullahan-1.5.2.202004232113_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-540886.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58274/545770/dullahan-1.5.2.202004281334_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-541163.tar.bz2 name darwin64 @@ -592,9 +592,9 @@ archive hash - 31e5520d553be76718c661523585bda7 + 9db3f4623c19ce0c28c5d4913d9b7861 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/57855/540261/dullahan-1.5.2.202004240417_81.2.17_gb382c62_chromium-81.0.4044.113-windows-540886.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58273/545773/dullahan-1.5.2.202004282034_81.2.17_gb382c62_chromium-81.0.4044.113-windows-541163.tar.bz2 name windows @@ -604,16 +604,16 @@ archive hash - 869560b9b78f30e936687dd07dafc38e + 93df25a4c1507bea0e3d9e6226cecd1d url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/57854/540264/dullahan-1.5.2.202004240417_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-540886.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58275/545778/dullahan-1.5.2.202004282034_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-541163.tar.bz2 name windows64 version - 1.5.2.202004240417_81.2.17_gb382c62_chromium-81.0.4044.113 + 1.5.2.202004282034_81.2.17_gb382c62_chromium-81.0.4044.113 elfio From b9fcd3dbf9bc066fe17486f69b0b513a8158672d Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Tue, 28 Apr 2020 15:37:27 -0700 Subject: [PATCH 03/27] Pull in the Dullahan package from the DRTVWR-512 branch of the canonical Dullahan repository --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index d2b51b4efa..13ee03723e 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@ archive hash - a4b720549715fd95e7e0c5c2813abab4 + 46a9f244bc415a64f4f6d68bec552a56 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58274/545770/dullahan-1.5.2.202004281334_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-541163.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58316/546216/dullahan-1.5.2.202004281532_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-541193.tar.bz2 name darwin64 @@ -592,9 +592,9 @@ archive hash - 9db3f4623c19ce0c28c5d4913d9b7861 + 374b7bf580dc61a36aa6e6508cb8675a url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58273/545773/dullahan-1.5.2.202004282034_81.2.17_gb382c62_chromium-81.0.4044.113-windows-541163.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58317/546225/dullahan-1.5.2.202004282232_81.2.17_gb382c62_chromium-81.0.4044.113-windows-541193.tar.bz2 name windows @@ -604,16 +604,16 @@ archive hash - 93df25a4c1507bea0e3d9e6226cecd1d + 9cdb6e4b5b67e1feb35d2e634a7e51b4 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58275/545778/dullahan-1.5.2.202004282034_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-541163.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58315/546224/dullahan-1.5.2.202004282232_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-541193.tar.bz2 name windows64 version - 1.5.2.202004282034_81.2.17_gb382c62_chromium-81.0.4044.113 + 1.5.2.202004282232_81.2.17_gb382c62_chromium-81.0.4044.113 elfio From 1305c03a13ada7617531c0c3daf3092b7c7b3b05 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Tue, 28 Apr 2020 15:38:45 -0700 Subject: [PATCH 04/27] Remove dullahan_host.exe from signing list - doesn't change anything security wise and leads to an extra copy of dullahan_host.exe because of a code signing bug --- indra/newview/viewer_manifest.py | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 60f980fb56..a4987af548 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -796,7 +796,6 @@ class WindowsManifest(ViewerManifest): for exe in ( self.final_exe(), "SLVersionChecker.exe", - "llplugin/dullahan_host.exe", ): self.sign(exe) From 25aa0999c603399cf81680411e3824430a9be789 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Tue, 28 Apr 2020 15:52:13 -0700 Subject: [PATCH 05/27] Fix for SL-13138 - Remove extraneous additon of dullahan_host.exe that crept in trying to make code signing work --- indra/newview/viewer_manifest.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index a4987af548..59929c198b 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -489,10 +489,6 @@ class WindowsManifest(ViewerManifest): # include the compiled launcher scripts so that it gets included in the file_list self.path('SLVersionChecker.exe') - with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')): - # include the dullahan host process so we can code sign it later - self.path('dullahan_host.exe') - with self.prefix(dst="vmp_icons"): with self.prefix(src=self.icon_path()): self.path("secondlife.ico") From 77d2a05921bdba3ac284350650c5394dcc8e3444 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Sun, 3 May 2020 19:03:22 -0700 Subject: [PATCH 06/27] Pick up first version of new Dullahan build autobuild scripts that builds CEF wrapper first before building Dullahan. Change to version headers meant a change to appviewer.cpp too. --- autobuild.xml | 14 +++++++------- indra/newview/llappviewer.cpp | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 13ee03723e..5e4b40536c 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@ archive hash - 46a9f244bc415a64f4f6d68bec552a56 + 15ede8b58dc15267b4266895b1800d1d url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58316/546216/dullahan-1.5.2.202004281532_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-541193.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58864/553286/dullahan-1.6.4.202005031842_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-541564.tar.bz2 name darwin64 @@ -592,9 +592,9 @@ archive hash - 374b7bf580dc61a36aa6e6508cb8675a + f5e42c628541cc9ee5f86b0f2269f65a url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58317/546225/dullahan-1.5.2.202004282232_81.2.17_gb382c62_chromium-81.0.4044.113-windows-541193.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58863/553275/dullahan-1.6.4.202005040141_81.2.17_gb382c62_chromium-81.0.4044.113-windows-541564.tar.bz2 name windows @@ -604,16 +604,16 @@ archive hash - 9cdb6e4b5b67e1feb35d2e634a7e51b4 + aef9be1ced8c38119e856152991f96ac url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58315/546224/dullahan-1.5.2.202004282232_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-541193.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58862/553280/dullahan-1.6.4.202005040141_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-541564.tar.bz2 name windows64 version - 1.5.2.202004282232_81.2.17_gb382c62_chromium-81.0.4044.113 + 1.6.4.202005040141_81.2.17_gb382c62_chromium-81.0.4044.113 elfio diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 55728bc366..8fc9d7ec30 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -127,7 +127,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 From 27efc55cdbcd906a19089a79488e1624a8625571 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Mon, 4 May 2020 14:24:28 -0700 Subject: [PATCH 07/27] Nonsensical, trivial change to force a build after I ran afoul of a TeamCity buildscripts change --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 27b629a578..4b0ff9ecf0 100755 --- a/.gitignore +++ b/.gitignore @@ -67,6 +67,7 @@ indra/web/doc/asset-upload/plugins/verify-texture installed.xml libraries tarfile_tmp +trivial_change_force_build web/config.* web/locale.* web/secondlife.com.* \ No newline at end of file From f3c95fce80ea00b999f8debd3dc1d668d7ec39a5 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Tue, 5 May 2020 14:12:51 -0700 Subject: [PATCH 08/27] Pull in a new version of Dullahan that is identical other than a bump in version number --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 5e4b40536c..b2045b7bef 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@ archive hash - 15ede8b58dc15267b4266895b1800d1d + 423116407f3b4e3683154e939415aaf3 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58864/553286/dullahan-1.6.4.202005031842_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-541564.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59087/555372/dullahan-1.6.5.202005051404_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-541711.tar.bz2 name darwin64 @@ -592,9 +592,9 @@ archive hash - f5e42c628541cc9ee5f86b0f2269f65a + 0e46583be666b554badc18e69d214996 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58863/553275/dullahan-1.6.4.202005040141_81.2.17_gb382c62_chromium-81.0.4044.113-windows-541564.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59089/555381/dullahan-1.6.5.202005052105_81.2.17_gb382c62_chromium-81.0.4044.113-windows-541711.tar.bz2 name windows @@ -604,16 +604,16 @@ archive hash - aef9be1ced8c38119e856152991f96ac + edcfba2ab9d1a56ba8f837f9dcb5e47d url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58862/553280/dullahan-1.6.4.202005040141_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-541564.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59088/555382/dullahan-1.6.5.202005052105_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-541711.tar.bz2 name windows64 version - 1.6.4.202005040141_81.2.17_gb382c62_chromium-81.0.4044.113 + 1.6.5.202005052105_81.2.17_gb382c62_chromium-81.0.4044.113 elfio From c5e41301d1adaa4a1113bcb6d79b2259613129b9 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Wed, 6 May 2020 10:33:30 -0700 Subject: [PATCH 09/27] Pull in the newest Dullahan built against the latest CEF. The CEF/Dullahan Windows builds are both functionally identical to the last one but the macOS CEF (and hence Dullahan) one is the first to be build entirely from source in TeamCity --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index b2045b7bef..a81766de05 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@ archive hash - 423116407f3b4e3683154e939415aaf3 + 4dfb2c207a8373abcda5f3af0d6fd956 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59087/555372/dullahan-1.6.5.202005051404_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-541711.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59195/556595/dullahan-1.6.5.202005061023_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-541803.tar.bz2 name darwin64 @@ -592,9 +592,9 @@ archive hash - 0e46583be666b554badc18e69d214996 + a3dee0ea6e8b4059d91acde51ba291b1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59089/555381/dullahan-1.6.5.202005052105_81.2.17_gb382c62_chromium-81.0.4044.113-windows-541711.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59196/556604/dullahan-1.6.5.202005061726_81.2.17_gb382c62_chromium-81.0.4044.113-windows-541803.tar.bz2 name windows @@ -604,16 +604,16 @@ archive hash - edcfba2ab9d1a56ba8f837f9dcb5e47d + 95dd825266e9c53f5fcb49b0818f0485 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59088/555382/dullahan-1.6.5.202005052105_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-541711.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59197/556609/dullahan-1.6.5.202005061726_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-541803.tar.bz2 name windows64 version - 1.6.5.202005052105_81.2.17_gb382c62_chromium-81.0.4044.113 + 1.6.5.202005061726_81.2.17_gb382c62_chromium-81.0.4044.113 elfio From d7f254bc136931da5b36d7f904fede2ed9864d2b Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Fri, 15 May 2020 18:05:49 -0700 Subject: [PATCH 10/27] Pull in new (Windows 64) Dullahan that was built from CEF in TeamCity --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index a81766de05..bc6f7f7fe8 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@ archive hash - 4dfb2c207a8373abcda5f3af0d6fd956 + 1087f4e4d61218b33cafb639ee0d7691 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59195/556595/dullahan-1.6.5.202005061023_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-541803.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59979/563448/dullahan-1.6.5.202005151739_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-542445.tar.bz2 name darwin64 @@ -592,9 +592,9 @@ archive hash - a3dee0ea6e8b4059d91acde51ba291b1 + 89bca5877e44a90e45b56a2706bc302a url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59196/556604/dullahan-1.6.5.202005061726_81.2.17_gb382c62_chromium-81.0.4044.113-windows-541803.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59980/563455/dullahan-1.6.5.202005160042_81.2.17_gb382c62_chromium-81.0.4044.113-windows-542445.tar.bz2 name windows @@ -604,16 +604,16 @@ archive hash - 95dd825266e9c53f5fcb49b0818f0485 + 6f1ece3462a83bd53924c8b258f22ca4 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59197/556609/dullahan-1.6.5.202005061726_81.2.17_gb382c62_chromium-81.0.4044.113-windows64-541803.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59978/563442/dullahan-1.6.5.202005160038_81.3.10_gb223419_chromium-81.0.4044.138-windows64-542445.tar.bz2 name windows64 version - 1.6.5.202005061726_81.2.17_gb382c62_chromium-81.0.4044.113 + 1.6.5.202005160038_81.3.10_gb223419_chromium-81.0.4044.138 elfio From 09802fa8ea9c8459e13a32720088f6d6fb1ad42d Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Fri, 15 May 2020 18:35:28 -0700 Subject: [PATCH 11/27] Tiny text change in the about box - indicates CEF and Chromium are sub-components --- indra/newview/llappviewer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 78cf21ddbb..7c0124322c 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3223,11 +3223,11 @@ LLSD LLAppViewer::getViewerInfo() const cef_ver_codec << DULLAHAN_VERSION_BUILD; cef_ver_codec << std::endl; - cef_ver_codec << "CEF: "; + cef_ver_codec << " CEF: "; cef_ver_codec << CEF_VERSION; cef_ver_codec << std::endl; - cef_ver_codec << "Chromium: "; + cef_ver_codec << " Chromium: "; cef_ver_codec << CHROME_VERSION_MAJOR; cef_ver_codec << "."; cef_ver_codec << CHROME_VERSION_MINOR; From e853238493577e78199b4b9011d9723d4fa555d6 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Wed, 20 May 2020 15:31:55 -0700 Subject: [PATCH 12/27] Fix for SL-13125 Update MediaRollOff values for greater range and less attenuation --- indra/newview/app_settings/settings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 86c6b409de..d11269a6e6 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8434,7 +8434,7 @@ Type F32 Value - 0.125 + 0.02 MediaRollOffMin @@ -8445,7 +8445,7 @@ Type F32 Value - 10.0 + 40.0 MediaRollOffMax @@ -8456,7 +8456,7 @@ Type F32 Value - 30.0 + 80.0 RecentItemsSortOrder From ad7dd768bc27f31cb0b0bc674432d1d38a33e890 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Thu, 21 May 2020 12:28:33 -0700 Subject: [PATCH 13/27] Investigating a fix/abatement for SL-13095 Windows Defender Firewall for dullahan_host.exe pops up late in the session - not clear this will remove the popup but it might and it will hopefully have our publisher info on it vs 'Unknown' --- indra/newview/viewer_manifest.py | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index ffc071e70b..41eb40c998 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -795,6 +795,7 @@ class WindowsManifest(ViewerManifest): for exe in ( self.final_exe(), "SLVersionChecker.exe", + "llplugin/dullahan_host.exe", ): self.sign(exe) From 839e7acbc80715e5a6524be371266a760aed74e8 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Fri, 22 May 2020 08:18:18 -0700 Subject: [PATCH 14/27] Pull in a new version of Dullahan that was built using the first version of CEF built entirely in TeamCity on all platform --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index bc6f7f7fe8..448b76e8ab 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@ archive hash - 1087f4e4d61218b33cafb639ee0d7691 + a915603d09b7f7b0813d14746ecf5778 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59979/563448/dullahan-1.6.5.202005151739_81.2.15_ge07275d_chromium-81.0.4044.92-darwin64-542445.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60398/567501/dullahan-1.6.9.202005220807_81.3.10_gb223419_chromium-81.0.4044.138-darwin64-542723.tar.bz2 name darwin64 @@ -592,9 +592,9 @@ archive hash - 89bca5877e44a90e45b56a2706bc302a + 326f6675b24c191c2d0796eebb33b4b0 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59980/563455/dullahan-1.6.5.202005160042_81.2.17_gb382c62_chromium-81.0.4044.113-windows-542445.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60400/567512/dullahan-1.6.9.202005221511_81.3.10_gb223419_chromium-81.0.4044.138-windows-542723.tar.bz2 name windows @@ -604,16 +604,16 @@ archive hash - 6f1ece3462a83bd53924c8b258f22ca4 + b3aa1515f8630cf6e6cc7d2cf1faffe6 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59978/563442/dullahan-1.6.5.202005160038_81.3.10_gb223419_chromium-81.0.4044.138-windows64-542445.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60399/567513/dullahan-1.6.9.202005221511_81.3.10_gb223419_chromium-81.0.4044.138-windows64-542723.tar.bz2 name windows64 version - 1.6.5.202005160038_81.3.10_gb223419_chromium-81.0.4044.138 + 1.6.9.202005221511_81.3.10_gb223419_chromium-81.0.4044.138 elfio From ad1a46affa3c47ba04a53a5ad625cd3e3693118f Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Fri, 22 May 2020 13:16:38 -0700 Subject: [PATCH 15/27] Fix (has a TOOD) for SL-13203: Parcel media auto-play works when turned off --- indra/newview/llviewerparcelmedia.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index 4713ed4167..0cdd447fcd 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -159,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(); From a01f29761263314c21dd4905f05124f4c15df502 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 27 May 2020 00:30:52 +0300 Subject: [PATCH 16/27] SL-13148 Implemented wheel support for inworld media --- indra/newview/llpanelprimmediacontrols.cpp | 28 ++++++++++++++++++++-- indra/newview/llpanelprimmediacontrols.h | 1 + indra/newview/lltoolpie.cpp | 21 ++++++++++++++-- indra/newview/lltoolpie.h | 1 + indra/newview/llviewermedia.cpp | 12 ++++++++++ indra/newview/llviewermedia.h | 1 + indra/newview/llviewermediafocus.cpp | 17 +++++++++++-- indra/newview/llviewermediafocus.h | 6 +++-- 8 files changed, 79 insertions(+), 8 deletions(-) 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 99b54f66d3..ed5dff1600 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -2293,6 +2293,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) { 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 objectp, S32 face); bool isHoveringOverFace(LLPointer 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(); From b532f6316be59bf2f9dc0e472cc65a54c12d9fd3 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Tue, 2 Jun 2020 13:59:45 -0700 Subject: [PATCH 17/27] Pull in new version of Dullahan that has a (trivial) fix for SL-13139 chat field on Youtube live is empty. --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 97110d9032..0f71472d1f 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -580,9 +580,9 @@ archive hash - a915603d09b7f7b0813d14746ecf5778 + 350866eec6be17ffc265904b91dcfe6b url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60398/567501/dullahan-1.6.9.202005220807_81.3.10_gb223419_chromium-81.0.4044.138-darwin64-542723.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60900/572290/dullahan-1.7.0.202005311125_81.3.10_gb223419_chromium-81.0.4044.138-darwin64-543086.tar.bz2 name darwin64 @@ -592,9 +592,9 @@ archive hash - 326f6675b24c191c2d0796eebb33b4b0 + aa4faf9ef9057362d63f8d57092506b3 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60400/567512/dullahan-1.6.9.202005221511_81.3.10_gb223419_chromium-81.0.4044.138-windows-542723.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60902/572301/dullahan-1.7.0.202005311828_81.3.10_gb223419_chromium-81.0.4044.138-windows-543086.tar.bz2 name windows @@ -604,16 +604,16 @@ archive hash - b3aa1515f8630cf6e6cc7d2cf1faffe6 + 6e29ea2ccdad80dcf1b5dc974932c1f6 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60399/567513/dullahan-1.6.9.202005221511_81.3.10_gb223419_chromium-81.0.4044.138-windows64-542723.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60901/572302/dullahan-1.7.0.202005311828_81.3.10_gb223419_chromium-81.0.4044.138-windows64-543086.tar.bz2 name windows64 version - 1.6.9.202005221511_81.3.10_gb223419_chromium-81.0.4044.138 + 1.7.0.202005311828_81.3.10_gb223419_chromium-81.0.4044.138 elfio From 68a0bdb03fe70a3e0fd715332299b21b8269741a Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Wed, 17 Jun 2020 15:07:44 +0200 Subject: [PATCH 18/27] Add @versionnum:impl= as a way to get the RLV implementation version as (RLVa implementation id is 13) --- indra/newview/rlvcommon.cpp | 5 +++++ indra/newview/rlvcommon.h | 1 + indra/newview/rlvdefines.h | 1 + indra/newview/rlvhandler.cpp | 5 ++++- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index 2dad3a4d00..e9f2d2fc69 100644 --- a/indra/newview/rlvcommon.cpp +++ b/indra/newview/rlvcommon.cpp @@ -439,6 +439,11 @@ std::string RlvStrings::getVersionNum(const LLUUID& idRlvObject) (!fCompatMode) ? RLV_VERSION_PATCH : RLV_VERSION_PATCH_COMPAT, (!fCompatMode) ? RLV_VERSION_BUILD : RLV_VERSION_BUILD_COMPAT); } +std::string RlvStrings::getVersionImplNum() +{ + return llformat("%d%02d%02d%02d", RLVa_VERSION_MAJOR, RLVa_VERSION_MAJOR, RLVa_VERSION_PATCH, RLVa_IMPL_ID); +} + // Checked: 2011-11-08 (RLVa-1.5.0) bool RlvStrings::hasString(const std::string& strStringName, bool fCheckCustom) { diff --git a/indra/newview/rlvcommon.h b/indra/newview/rlvcommon.h index 47a8ebf148..91385439a2 100644 --- a/indra/newview/rlvcommon.h +++ b/indra/newview/rlvcommon.h @@ -151,6 +151,7 @@ public: static const std::string& getStringMapPath() { return m_StringMapPath; } static std::string getVersion(const LLUUID& idRlvObject, bool fLegacy = false); static std::string getVersionAbout(); + static std::string getVersionImplNum(); static std::string getVersionNum(const LLUUID& idRlvObject); static bool hasString(const std::string& strStringName, bool fCheckCustom = false); static void setCustomString(const std::string& strStringName, const std::string& strStringValue); diff --git a/indra/newview/rlvdefines.h b/indra/newview/rlvdefines.h index fb35b3b9e7..95e1bf326c 100644 --- a/indra/newview/rlvdefines.h +++ b/indra/newview/rlvdefines.h @@ -37,6 +37,7 @@ const S32 RLV_VERSION_BUILD_COMPAT = 0; const S32 RLVa_VERSION_MAJOR = 2; const S32 RLVa_VERSION_MINOR = 3; const S32 RLVa_VERSION_PATCH = 0; +const S32 RLVa_IMPL_ID = 13; // Uncomment before a final release //#define RLV_RELEASE diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index 83a46f3452..09143d10df 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -3104,7 +3104,10 @@ ERlvCmdRet RlvHandler::processReplyCommand(const RlvCommand& rlvCmd) const break; case RLV_BHVR_VERSIONNUM: // @versionnum= - Checked: 2010-03-27 (RLVa-1.4.0a) | Added: RLVa-1.0.4b // NOTE: RLV will respond even if there's an option - strReply = RlvStrings::getVersionNum(rlvCmd.getObjectID()); + if (!rlvCmd.hasOption()) + strReply = RlvStrings::getVersionNum(rlvCmd.getObjectID()); + else if ("impl" == rlvCmd.getOption()) + strReply = RlvStrings::getVersionImplNum(); break; case RLV_BHVR_GETATTACH: // @getattach[:]= eRet = onGetAttach(rlvCmd, strReply); From 6f2009f33db8c75bd475556221d9ab5e56195a26 Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Wed, 17 Jun 2020 15:19:29 +0200 Subject: [PATCH 19/27] [FIXED] hasBehaviourExcept() with an empty option returns false even though a RLV_OPTION_MODIFIER active restriction exists -> RlvCommand::markRefCounted() is called from RlvBehaviourGenericProcessor as expected -> However, the RlvCommand reference we pass throughout the entire command processing line is a reference to the originally parsed command and not a reference to the copy that was stored in the RlvObject's command list -> The fact that we're mutating a constant is excusable in this case since only the command processor will know whether an option command should end up getting reference counted -> This bug only applies to hasBehaviourExcept() since the behaviour reference counter was still incremented/decremented successfully and hasBehaviourExcept() does a deep check on the individual commands instead -> Fixes FIRE-24215 --- indra/newview/rlvhandler.cpp | 63 +++++++++++++++++++----------------- indra/newview/rlvhandler.h | 6 ++-- indra/newview/rlvhelper.cpp | 14 ++++---- indra/newview/rlvhelper.h | 4 +-- 4 files changed, 47 insertions(+), 40 deletions(-) diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index 09143d10df..68f0c364eb 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -438,42 +438,46 @@ bool RlvHandler::notifyCommandHandlers(rlvExtCommandHandler f, const RlvCommand& } // Checked: 2009-11-25 (RLVa-1.1.0f) | Modified: RLVa-1.1.0f -ERlvCmdRet RlvHandler::processCommand(const RlvCommand& rlvCmd, bool fFromObj) +ERlvCmdRet RlvHandler::processCommand(std::reference_wrapper rlvCmd, bool fFromObj) { - RLV_DEBUGS << "[" << rlvCmd.getObjectID() << "]: " << rlvCmd.asString() << RLV_ENDL; + { + const RlvCommand& rlvCmdTmp = rlvCmd; // Reference to the temporary with limited variable scope since we don't want it to leak below - if ( (isBlockedObject(rlvCmd.getObjectID())) && (RLV_TYPE_REMOVE != rlvCmd.getParamType()) && (RLV_TYPE_CLEAR != rlvCmd.getParamType()) ) - { - RLV_DEBUGS << "\t-> blocked object" << RLV_ENDL; - return RLV_RET_FAILED_BLOCKED; - } - if (!rlvCmd.isValid()) - { - RLV_DEBUGS << "\t-> invalid syntax" << RLV_ENDL; - return RLV_RET_FAILED_SYNTAX; - } - if (rlvCmd.isBlocked()) - { - RLV_DEBUGS << "\t-> blocked command" << RLV_ENDL; - return RLV_RET_FAILED_DISABLED; + RLV_DEBUGS << "[" << rlvCmdTmp.getObjectID() << "]: " << rlvCmdTmp.asString() << RLV_ENDL; + + if ( (isBlockedObject(rlvCmdTmp.getObjectID())) && (RLV_TYPE_REMOVE != rlvCmdTmp.getParamType()) && (RLV_TYPE_CLEAR != rlvCmdTmp.getParamType()) ) + { + RLV_DEBUGS << "\t-> blocked object" << RLV_ENDL; + return RLV_RET_FAILED_BLOCKED; + } + if (!rlvCmdTmp.isValid()) + { + RLV_DEBUGS << "\t-> invalid syntax" << RLV_ENDL; + return RLV_RET_FAILED_SYNTAX; + } + if (rlvCmdTmp.isBlocked()) + { + RLV_DEBUGS << "\t-> blocked command" << RLV_ENDL; + return RLV_RET_FAILED_DISABLED; + } } // Using a stack for executing commands solves a few problems: // - if we passed RlvObject::m_idObj for idObj somewhere and process a @clear then idObj points to invalid/cleared memory at the end // - if command X triggers command Y along the way then getCurrentCommand()/getCurrentObject() still return Y even when finished - m_CurCommandStack.push(&rlvCmd); m_CurObjectStack.push(rlvCmd.getObjectID()); + m_CurCommandStack.push(rlvCmd); m_CurObjectStack.push(rlvCmd.get().getObjectID()); const LLUUID& idCurObj = m_CurObjectStack.top(); ERlvCmdRet eRet = RLV_RET_UNKNOWN; - switch (rlvCmd.getParamType()) + switch (rlvCmd.get().getParamType()) { case RLV_TYPE_ADD: // Checked: 2009-11-26 (RLVa-1.1.0f) | Modified: RLVa-1.1.0f { - if ( (m_Behaviours[rlvCmd.getBehaviourType()]) && - ( (RLV_BHVR_SETCAM == rlvCmd.getBehaviourType()) || (RLV_BHVR_SETDEBUG == rlvCmd.getBehaviourType()) || (RLV_BHVR_SETENV == rlvCmd.getBehaviourType()) ) ) + ERlvBehaviour eBhvr = rlvCmd.get().getBehaviourType(); + if ( (m_Behaviours[eBhvr]) && ( (RLV_BHVR_SETCAM == eBhvr) || (RLV_BHVR_SETDEBUG == eBhvr) || (RLV_BHVR_SETENV == eBhvr) ) ) { // Some restrictions can only be held by one single object to avoid deadlocks - RLV_DEBUGS << "\t- " << rlvCmd.getBehaviour() << " is already set by another object => discarding" << RLV_ENDL; + RLV_DEBUGS << "\t- " << rlvCmd.get().getBehaviour() << " is already set by another object => discarding" << RLV_ENDL; eRet = RLV_RET_FAILED_LOCK; break; } @@ -481,14 +485,14 @@ ERlvCmdRet RlvHandler::processCommand(const RlvCommand& rlvCmd, bool fFromObj) rlv_object_map_t::iterator itObj = m_Objects.find(idCurObj); bool fAdded = false; if (itObj != m_Objects.end()) { - RlvObject& rlvObj = itObj->second; - fAdded = rlvObj.addCommand(rlvCmd); + // Add the command to an existing object + rlvCmd = itObj->second.addCommand(rlvCmd, fAdded); } else { - RlvObject rlvObj(idCurObj); - fAdded = rlvObj.addCommand(rlvCmd); - itObj = m_Objects.insert(std::pair(idCurObj, rlvObj)).first; + // Create a new RLV object and then add the command to it (and grab its reference) + itObj = m_Objects.insert(std::pair(idCurObj, RlvObject(idCurObj))).first; + rlvCmd = itObj->second.addCommand(rlvCmd, fAdded); } RLV_DEBUGS << "\t- " << ( (fAdded) ? "adding behaviour" : "skipping duplicate" ) << RLV_ENDL; @@ -563,12 +567,13 @@ ERlvCmdRet RlvHandler::processCommand(const RlvCommand& rlvCmd, bool fFromObj) // Checked: 2009-11-25 (RLVa-1.1.0f) | Modified: RLVa-1.1.0f ERlvCmdRet RlvHandler::processCommand(const LLUUID& idObj, const std::string& strCommand, bool fFromObj) { + const RlvCommand rlvCmd(idObj, strCommand); if (STATE_STARTED != LLStartUp::getStartupState()) { - m_Retained.push_back(RlvCommand(idObj, strCommand)); + m_Retained.push_back(rlvCmd); return RLV_RET_RETAINED; } - return processCommand(RlvCommand(idObj, strCommand), fFromObj); + return processCommand(std::ref(rlvCmd), fFromObj); } // Checked: 2010-02-27 (RLVa-1.2.0a) | Modified: RLVa-1.1.0f @@ -583,7 +588,7 @@ void RlvHandler::processRetainedCommands(ERlvBehaviour eBhvrFilter /*=RLV_BHVR_U if ( ((RLV_BHVR_UNKNOWN == eBhvrFilter) || (rlvCmd.getBehaviourType() == eBhvrFilter)) && ((RLV_TYPE_UNKNOWN == eTypeFilter) || (rlvCmd.getParamType() == eTypeFilter)) ) { - processCommand(rlvCmd, true); + processCommand(std::ref(rlvCmd), true); m_Retained.erase(itCurCmd); } } diff --git a/indra/newview/rlvhandler.h b/indra/newview/rlvhandler.h index 5a6e5508eb..06c18fdc53 100644 --- a/indra/newview/rlvhandler.h +++ b/indra/newview/rlvhandler.h @@ -133,7 +133,7 @@ public: bool processIMQuery(const LLUUID& idSender, const std::string& strCommand); // Returns a pointer to the currently executing command (do *not* save this pointer) - const RlvCommand* getCurrentCommand() const { return (!m_CurCommandStack.empty()) ? m_CurCommandStack.top() : NULL; } + const RlvCommand* getCurrentCommand() const { return (!m_CurCommandStack.empty()) ? &m_CurCommandStack.top().get() : nullptr; } // Returns the UUID of the object we're currently executing a command for const LLUUID& getCurrentObject() const { return (!m_CurObjectStack.empty()) ? m_CurObjectStack.top() : LLUUID::null; } @@ -203,7 +203,7 @@ public: * Command processing */ protected: - ERlvCmdRet processCommand(const RlvCommand& rlvCmd, bool fFromObj); + ERlvCmdRet processCommand(std::reference_wrapper rlvCmdRef, bool fFromObj); ERlvCmdRet processClearCommand(const RlvCommand& rlvCmd); // Command handlers (RLV_TYPE_ADD and RLV_TYPE_CLEAR) @@ -244,7 +244,7 @@ protected: rlv_command_list_t m_Retained; RlvGCTimer* m_pGCTimer; - std::stack m_CurCommandStack;// Convenience (see @tpto) + std::stack> m_CurCommandStack; // Convenience (see @tpto) std::stack m_CurObjectStack; // Convenience (see @tpto) rlv_behaviour_signal_t m_OnBehaviour; diff --git a/indra/newview/rlvhelper.cpp b/indra/newview/rlvhelper.cpp index 4a4ab3c7c0..3658f2daaf 100644 --- a/indra/newview/rlvhelper.cpp +++ b/indra/newview/rlvhelper.cpp @@ -642,8 +642,9 @@ RlvCommand::RlvCommand(const LLUUID& idObj, const std::string& strCommand) } RlvCommand::RlvCommand(const RlvCommand& rlvCmd, ERlvParamType eParamType) - : m_fValid(rlvCmd.m_fValid), m_idObj(rlvCmd.m_idObj), m_strBehaviour(rlvCmd.m_strBehaviour), m_pBhvrInfo(rlvCmd.m_pBhvrInfo), - m_eParamType( (RLV_TYPE_UNKNOWN == eParamType) ? rlvCmd.m_eParamType : eParamType),m_fStrict(rlvCmd.m_fStrict), m_strOption(rlvCmd.m_strOption), m_strParam(rlvCmd.m_strParam), m_fRefCounted(false) + : m_fValid(rlvCmd.m_fValid), m_idObj(rlvCmd.m_idObj), m_strBehaviour(rlvCmd.m_strBehaviour), m_pBhvrInfo(rlvCmd.m_pBhvrInfo) + , m_eParamType( (RLV_TYPE_UNKNOWN == eParamType) ? rlvCmd.m_eParamType : eParamType),m_fStrict(rlvCmd.m_fStrict), m_strOption(rlvCmd.m_strOption) + , m_strParam(rlvCmd.m_strParam), m_fRefCounted(rlvCmd.m_fRefCounted) { } @@ -989,7 +990,7 @@ RlvObject::RlvObject(const LLUUID& idObj) : m_idObj(idObj), m_nLookupMisses(0) m_idRoot = (pObj) ? pObj->getRootEdit()->getID() : LLUUID::null; } -bool RlvObject::addCommand(const RlvCommand& rlvCmd) +const RlvCommand& RlvObject::addCommand(const RlvCommand& rlvCmd, bool& fAdded) { RLV_ASSERT(RLV_TYPE_ADD == rlvCmd.getParamType()); @@ -999,14 +1000,15 @@ bool RlvObject::addCommand(const RlvCommand& rlvCmd) if ( (itCmd->getBehaviour() == rlvCmd.getBehaviour()) && (itCmd->getOption() == rlvCmd.getOption()) && (itCmd->isStrict() == rlvCmd.isStrict() ) ) { - return false; + fAdded = false; + return *itCmd; } } // Now that we know it's not a duplicate, add it to the end of the list m_Commands.push_back(rlvCmd); - - return true; + fAdded = true; + return m_Commands.back(); } bool RlvObject::removeCommand(const RlvCommand& rlvCmd) diff --git a/indra/newview/rlvhelper.h b/indra/newview/rlvhelper.h index 6cf2c5c62e..02d682596a 100644 --- a/indra/newview/rlvhelper.h +++ b/indra/newview/rlvhelper.h @@ -434,8 +434,8 @@ public: * Member functions */ public: - bool addCommand(const RlvCommand& rlvCmd); - bool removeCommand(const RlvCommand& rlvCmd); + const RlvCommand& addCommand(const RlvCommand& rlvCmd, bool& fAdded); + bool removeCommand(const RlvCommand& rlvCmd); std::string getStatusString(const std::string& strFilter, const std::string& strSeparator) const; bool hasBehaviour(ERlvBehaviour eBehaviour, bool fStrictOnly) const; From cafe3a7688db7dd59ca4d29c4da11d5427e83e92 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 17 Jun 2020 16:14:37 +0200 Subject: [PATCH 20/27] Fix buttons on bottom row on quickprefs floater aren't clickable at their full height --- indra/newview/skins/default/xui/en/floater_quickprefs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_quickprefs.xml b/indra/newview/skins/default/xui/en/floater_quickprefs.xml index 949084eb30..d7e2d3498b 100644 --- a/indra/newview/skins/default/xui/en/floater_quickprefs.xml +++ b/indra/newview/skins/default/xui/en/floater_quickprefs.xml @@ -20,7 +20,7 @@ left="0" top="16" width="260" - height="152" + height="155" follows="all" layout="topleft"> Date: Thu, 18 Jun 2020 13:24:36 +0200 Subject: [PATCH 21/27] When pasting object position take object's region width into account, not agent's region --- indra/newview/llpanelobject.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 9cbda7bbba..40f4bb9981 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -2703,6 +2703,10 @@ void LLPanelObject::onCopyRot(const LLSD& data) void LLPanelObject::onPastePos(const LLSD& data) { if(!mHasPosClipboard) return; + if (mObject.isNull()) return; + + LLViewerRegion* regionp = mObject->getRegion(); + if (!regionp) return; //clamp pos on non-attachments, just keep the prims on the sim if (!mObject->isAttachment()) @@ -2710,8 +2714,8 @@ void LLPanelObject::onPastePos(const LLSD& data) // Aurora Sim //mClipboardPos.mV[VX] = llclamp( mClipboardPos.mV[VX], 0.f, 256.f); //mClipboardPos.mV[VY] = llclamp( mClipboardPos.mV[VY], 0.f, 256.f); - mClipboardPos.mV[VX] = llclamp( mClipboardPos.mV[VX], 0.f, gAgent.getRegion()->getWidth()); - mClipboardPos.mV[VY] = llclamp( mClipboardPos.mV[VY], 0.f, gAgent.getRegion()->getWidth()); + mClipboardPos.mV[VX] = llclamp( mClipboardPos.mV[VX], 0.f, regionp->getWidth()); + mClipboardPos.mV[VY] = llclamp( mClipboardPos.mV[VY], 0.f, regionp->getWidth()); // Aurora Sim //height will get properly clammed by sendPosition } From d2aa85a7f3ffaa35027a3850e07543125c7c2ee1 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Thu, 18 Jun 2020 19:29:36 +0200 Subject: [PATCH 22/27] FIRE-29713 Japanese translation update, by Hiroshi Kumaki --- .../default/xui/ja/floater_about_land.xml | 26 ++-- .../xui/ja/floater_adjust_environment.xml | 38 +++-- .../skins/default/xui/ja/floater_beacons.xml | 3 + .../default/xui/ja/floater_beamshape.xml | 17 +++ .../default/xui/ja/floater_bulk_perms.xml | 11 +- .../skins/default/xui/ja/floater_camera.xml | 54 +++---- .../default/xui/ja/floater_camera_presets.xml | 3 + .../default/xui/ja/floater_edit_day_cycle.xml | 104 ------------- .../xui/ja/floater_edit_ext_day_cycle.xml | 111 ++++++-------- .../xui/ja/floater_edit_hover_height.xml | 1 + .../xui/ja/floater_edit_sky_preset.xml | 144 ------------------ .../xui/ja/floater_edit_water_preset.xml | 109 ------------- .../xui/ja/floater_environment_settings.xml | 45 ------ .../xui/ja/floater_fixedenvironment.xml | 9 +- .../xui/ja/floater_inventory_view_finder.xml | 5 +- .../xui/ja/floater_load_pref_preset.xml | 2 +- .../xui/ja/floater_my_environments.xml | 8 +- .../default/xui/ja/floater_perms_default.xml | 10 +- .../default/xui/ja/floater_phototools.xml | 5 +- .../xui/ja/floater_phototools_camera.xml | 8 +- .../default/xui/ja/floater_pick_track.xml | 12 +- .../floater_preferences_graphics_advanced.xml | 5 + .../ja/floater_preferences_view_advanced.xml | 8 + .../default/xui/ja/floater_quickprefs.xml | 5 +- .../xui/ja/floater_save_camera_preset.xml | 12 ++ .../xui/ja/floater_save_pref_preset.xml | 8 +- .../xui/ja/floater_settings_picker.xml | 6 +- .../default/xui/ja/menu_attachment_self.xml | 13 +- .../skins/default/xui/ja/menu_inventory.xml | 34 +++-- .../default/xui/ja/menu_inventory_add.xml | 12 +- .../xui/ja/menu_pie_attachment_self.xml | 17 ++- .../default/xui/ja/menu_save_settings.xml | 4 +- .../default/xui/ja/menu_settings_gear.xml | 2 +- .../skins/default/xui/ja/menu_viewer.xml | 33 ++-- .../skins/default/xui/ja/notifications.xml | 84 +++++++++- .../xui/ja/panel_camera_preset_item.xml | 6 + .../default/xui/ja/panel_main_inventory.xml | 4 +- .../default/xui/ja/panel_navigation_bar.xml | 2 +- .../xui/ja/panel_preferences_colors.xml | 1 + .../xui/ja/panel_preferences_crashreports.xml | 12 +- .../default/xui/ja/panel_preferences_move.xml | 1 - .../xui/ja/panel_presets_camera_pulldown.xml | 5 + .../xui/ja/panel_region_environment.xml | 25 ++- .../xui/ja/panel_settings_sky_atmos.xml | 27 +++- .../xui/ja/panel_settings_sky_clouds.xml | 14 +- .../xui/ja/panel_settings_sky_density.xml | 24 +-- .../xui/ja/panel_settings_sky_sunmoon.xml | 25 ++- .../default/xui/ja/panel_settings_water.xml | 25 ++- .../skins/default/xui/ja/role_actions.xml | 1 + .../default/xui/ja/sidepanel_inventory.xml | 5 +- .../newview/skins/default/xui/ja/strings.xml | 78 +++++++++- .../default/xui/ja/widgets/density_ctrl.xml | 9 ++ .../xui/ja/widgets/sun_moon_trackball.xml | 8 + .../vintage/xui/ja/floater_about_land.xml | 1 + .../vintage/xui/ja/panel_main_inventory.xml | 5 + 55 files changed, 593 insertions(+), 653 deletions(-) create mode 100644 indra/newview/skins/default/xui/ja/floater_beamshape.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_camera_presets.xml delete mode 100644 indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml delete mode 100644 indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml delete mode 100644 indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml delete mode 100644 indra/newview/skins/default/xui/ja/floater_environment_settings.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_preferences_view_advanced.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_save_camera_preset.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_camera_preset_item.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_presets_camera_pulldown.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/density_ctrl.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/sun_moon_trackball.xml diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml index bf519aa933..dc08bee940 100644 --- a/indra/newview/skins/default/xui/ja/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml @@ -72,12 +72,18 @@ 区画が選択されていません。 - [year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + + + この区画 ID は該当がありません。 名前: + + 区画 ID + 説明: @@ -97,13 +103,13 @@ 所有者: - Loading... + ロード中... グループ: - Loading... + ロード中...