From 2aea7cfc25d42e3d87db4fb759baa4419ec23dca Mon Sep 17 00:00:00 2001
From: Callum Prentice <callum@gmail.com>
Date: Wed, 24 Feb 2021 15:20:39 -0800
Subject: [PATCH] Pull in new version of Dullahan with support for setting the
 host process path, tweak viewer manifest so it copies the SwiftShader folder
 (required but may be a Chromium bug) and improve background color matching

---
 autobuild.xml                                |  6 +++---
 indra/media_plugins/cef/media_plugin_cef.cpp | 12 +++++++++++-
 indra/newview/viewer_manifest.py             |  6 ++++++
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index 08fd69f2f29..fa21054499e 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -604,16 +604,16 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>0c0ef3d529fcde0d966d24af39175041</string>
+              <string>9e12e974d00d6f45b2cbb891fa8a4747</string>
               <key>url</key>
-              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/77425/734566/dullahan-1.9.1.202102230022_88.2.8_ge484012_chromium-88.0.4324.150-windows64-556277.tar.bz2</string>
+              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/77546/735174/dullahan-1.9.1.202102242217_88.2.8_ge484012_chromium-88.0.4324.150-windows64-556355.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>1.9.1.202102230022_88.2.8_ge484012_chromium-88.0.4324.150</string>
+        <string>1.9.1.202102242217_88.2.8_ge484012_chromium-88.0.4324.150</string>
       </map>
       <key>elfio</key>
       <map>
diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp
index 0bb62d79ff0..c658f354805 100644
--- a/indra/media_plugins/cef/media_plugin_cef.cpp
+++ b/indra/media_plugins/cef/media_plugin_cef.cpp
@@ -525,8 +525,18 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 				mCEFLib->setOnJSDialogCallback(std::bind(&MediaPluginCEF::onJSDialogCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
 				
 				dullahan::dullahan_settings settings;
+#if LL_WINDOWS
+				// As of CEF version 83+, for Windows versions, we need to tell CEF 
+				// where the host helper process is since this DLL is not in the same
+				// dir as the executable that loaded it (SLPlugin.exe). The code in 
+				// Dullahan that tried to figure out the location automatically uses 
+				// the location of the exe which isn't helpful so we tell it explicitly.
+				char cur_dir_str[MAX_PATH];
+				GetCurrentDirectoryA(MAX_PATH, cur_dir_str);
+				settings.host_process_path = std::string(cur_dir_str);
+#endif
 				settings.accept_language_list = mHostLanguage;
-				settings.background_color = 0xffffffff;
+				settings.background_color = 0xff282828; // close to Viewer background color
 				settings.cache_enabled = true;
 				settings.root_cache_path = mRootCachePath;
 				settings.cache_path = mCachePath;
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 6d231040f77..3ce3aae4693 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -611,6 +611,12 @@ def construct(self):
                 self.path("msvcp140.dll")
                 self.path("vcruntime140.dll")
 
+            # as of CEF 88, this (apparently software rendering support)
+            # folder is required - likely a Chromium bug - but including
+            # for now until the root cause is found - it's tiny
+            with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')):
+                self.path("swiftshader/")
+
             # CEF files common to all configurations
             with self.prefix(src=os.path.join(pkgdir, 'resources')):
                 self.path("cef.pak")
-- 
GitLab