From 6b203f2ee4bbaf893b7256e35581403b18de68f3 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Thu, 19 Mar 2020 21:39:05 +0200
Subject: [PATCH] SL-12607 FMOD Logo

---
 autobuild.xml                                 | 22 +++++++-------
 indra/llcommon/indra_constants.cpp            |  2 ++
 indra/llcommon/indra_constants.h              |  2 ++
 indra/newview/llprogressview.cpp              | 14 +++++++++
 indra/newview/llprogressview.h                |  3 ++
 indra/newview/llstartup.cpp                   |  1 +
 indra/newview/llviewertexturelist.cpp         | 29 +++++++++++++++++++
 indra/newview/llviewerwindow.cpp              |  4 +++
 indra/newview/llviewerwindow.h                |  1 +
 .../skins/default/xui/en/panel_progress.xml   | 22 ++++++++++++++
 indra/newview/viewer_manifest.py              | 15 ++++++++++
 11 files changed, 104 insertions(+), 11 deletions(-)

diff --git a/autobuild.xml b/autobuild.xml
index a4f39be595e..51259486ab3 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -748,9 +748,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>5b65500b8992f96d409c79bc9a694ec6</string>
+              <string>2bdcd463bb0e5f610f9af0c073f58066</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/50234/453770/fmodstudio-2.00.07.535399-darwin64-535399.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/54587/506858/fmodstudio-2.00.07.538806-darwin64-538806.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin64</string>
@@ -760,9 +760,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>3dec74f5af59ee8ad44bc6da77582167</string>
+              <string>ae75cdb1cc9da824c9e270bf97bfdd6c</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/50231/453756/fmodstudio-2.00.07.535399-linux-535399.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/54589/506866/fmodstudio-2.00.07.538806-linux64-538806.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -772,9 +772,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>3dec74f5af59ee8ad44bc6da77582167</string>
+              <string>ae75cdb1cc9da824c9e270bf97bfdd6c</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/50231/453756/fmodstudio-2.00.07.535399-linux-535399.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/54589/506866/fmodstudio-2.00.07.538806-linux64-538806.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux64</string>
@@ -784,9 +784,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>6e5855d0703f496ad8d61f9d9c6ae6a9</string>
+              <string>5bc07fe561bf8fdf9060c60e247564a9</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/50236/453775/fmodstudio-2.00.07.535399-windows-535399.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/54591/506881/fmodstudio-2.00.07.538806-windows-538806.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
@@ -796,16 +796,16 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>a1677997916de45b860c20b83103ff3d</string>
+              <string>90cd0547c8cf6957a9d1083c83ee4a8e</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/50233/453772/fmodstudio-2.00.07.535399-windows64-535399.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/54590/506880/fmodstudio-2.00.07.538806-windows64-538806.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>2.00.07.535399</string>
+        <string>2.00.07.538806</string>
       </map>
       <key>fontconfig</key>
       <map>
diff --git a/indra/llcommon/indra_constants.cpp b/indra/llcommon/indra_constants.cpp
index e13176e8fac..53f98adbbf0 100644
--- a/indra/llcommon/indra_constants.cpp
+++ b/indra/llcommon/indra_constants.cpp
@@ -84,3 +84,5 @@ const LLUUID IMG_USE_BAKED_AUX1  ("9742065b-19b5-297c-858a-29711d539043");
 const LLUUID IMG_USE_BAKED_AUX2  ("03642e83-2bd1-4eb9-34b4-4c47ed586d2d");
 const LLUUID IMG_USE_BAKED_AUX3  ("edd51b77-fc10-ce7a-4b3d-011dfc349e4f");
 
+const LLUUID IMG_LOGO_FMOD("876982f5-f5fd-4a68-b5e7-727f3ae3487b");
+
diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h
index 0fbf4b966b2..7d20286ac91 100644
--- a/indra/llcommon/indra_constants.h
+++ b/indra/llcommon/indra_constants.h
@@ -218,6 +218,8 @@ LL_COMMON_API extern const LLUUID IMG_USE_BAKED_AUX1;
 LL_COMMON_API extern const LLUUID IMG_USE_BAKED_AUX2;
 LL_COMMON_API extern const LLUUID IMG_USE_BAKED_AUX3;
 
+LL_COMMON_API extern const LLUUID IMG_LOGO_FMOD;
+
 LL_COMMON_API extern const LLUUID DEFAULT_WATER_NORMAL;
 
 
diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp
index 083a913ef8b..dfa6c97b26a 100644
--- a/indra/newview/llprogressview.cpp
+++ b/indra/newview/llprogressview.cpp
@@ -42,6 +42,7 @@
 #include "llbutton.h"
 #include "llcallbacklist.h"
 #include "llfocusmgr.h"
+#include "lliconctrl.h"
 #include "llnotifications.h"
 #include "llprogressbar.h"
 #include "llstartup.h"
@@ -183,6 +184,7 @@ void LLProgressView::setVisible(BOOL visible)
 	if (getVisible() && !visible)
 	{
 		LLPanel::setVisible(FALSE);
+		setShowLogos(FALSE);
 	}
 	// showing progress view
 	else if (visible && (!getVisible() || mFadeToWorldTimer.getStarted()))
@@ -309,6 +311,18 @@ void LLProgressView::setMessage(const std::string& msg)
 	getChild<LLUICtrl>("message_text")->setValue(mMessage);
 }
 
+void LLProgressView::setShowLogos(const BOOL logos_visible)
+{
+    LLIconCtrl* logo = getChild<LLIconCtrl>("fmod_logo");
+    if (logos_visible)
+    {
+        logo->setValue(IMG_LOGO_FMOD);
+    }
+    logo->setVisible(logos_visible);
+    getChild<LLUICtrl>("fmod_text")->setVisible(logos_visible);
+    getChild<LLUICtrl>("message_text")->setVisible(!logos_visible);
+}
+
 void LLProgressView::setCancelButtonVisible(BOOL b, const std::string& label)
 {
 	mCancelBtn->setVisible( b );
diff --git a/indra/newview/llprogressview.h b/indra/newview/llprogressview.h
index 813576b21d1..1d4ae3a66ff 100644
--- a/indra/newview/llprogressview.h
+++ b/indra/newview/llprogressview.h
@@ -70,6 +70,9 @@ class LLProgressView :
 
 	void setStartupComplete();
 
+	// turns on logos, hides message of the day
+	void setShowLogos(const BOOL logos_visible);
+
 	void setCancelButtonVisible(BOOL b, const std::string& label);
 
 	static void onCancelButtonClicked( void* );
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index fdf0ff35069..cb76ac6f741 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -734,6 +734,7 @@ bool idle_startup()
 		display_startup();
 		// LLViewerMedia::initBrowser();
 		LLStartUp::setStartupState( STATE_LOGIN_SHOW );
+		gViewerWindow->setShowLogos(TRUE);
 		return FALSE;
 	}
 
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 06524847d17..b29e65923bb 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -190,6 +190,35 @@ void LLViewerTextureList::doPreloadImages()
 		mImagePreloads.insert(image);
 	}
 
+    // Normally images are located in 'skins' folder in working directory,
+    // but 3p images were added from packages and had to stay in separate folder
+    // with path relative to exe.
+
+    std::string full_path = gDirUtilp->getExpandedFilename(LL_PATH_EXECUTABLE, "3p_icons", "fmod.png");
+    if (full_path.empty())
+    {
+        LL_WARNS() << "Failed to find local image file fmod.png at " << full_path << LL_ENDL;
+    }
+    else if (gDirUtilp->fileExists(full_path))
+    {
+        image = LLViewerTextureManager::getFetchedTextureFromUrl("file://" + full_path, FTT_LOCAL_FILE, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI, LLViewerTexture::FETCHED_TEXTURE,
+            0, 0, IMG_LOGO_FMOD);
+        if (image)
+        {
+            image->setAddressMode(LLTexUnit::TAM_WRAP);
+            mImagePreloads.insert(image);
+            // Speed up load (this texture will be used early)
+            image->setKnownDrawSize(364, 98);
+            image->processTextureStats();
+            image->setDecodePriority(LLViewerFetchedTexture::maxDecodePriority());
+            image->updateFetch();
+            // Fmod logo is only needed at startup, if we will get more logos
+            // for startup, might be good idea to save resources and do loading
+            // in scope of llprogressview and then unload everything once no
+            // longer needed
+        }
+    }
+
 	LLPointer<LLImageRaw> img_blak_square_tex(new LLImageRaw(2, 2, 3));
 	memset(img_blak_square_tex->getData(), 0, img_blak_square_tex->getDataSize());
 	LLPointer<LLViewerFetchedTexture> img_blak_square(new LLViewerFetchedTexture(img_blak_square_tex, FTT_DEFAULT, FALSE));
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index ff5dff1c9b1..89f3b17021f 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -5151,6 +5151,10 @@ void LLViewerWindow::setProgressCancelButtonVisible( BOOL b, const std::string&
 	}
 }
 
+void LLViewerWindow::setShowLogos(const BOOL show_3p_logos)
+{
+    mProgressView->setShowLogos(show_3p_logos);
+}
 
 LLProgressView *LLViewerWindow::getProgressView() const
 {
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 385bbd57e54..9adfe7b5c57 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -309,6 +309,7 @@ class LLViewerWindow : public LLWindowCallbacks
 	void			setProgressPercent(const F32 percent);
 	void			setProgressMessage(const std::string& msg);
 	void			setProgressCancelButtonVisible( BOOL b, const std::string& label = LLStringUtil::null );
+	void			setShowLogos(const BOOL show_3p_logos);
 	LLProgressView *getProgressView() const;
 	void			revealIntroPanel();
 	void			setStartupComplete();
diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml
index 860caf2d217..03caf8e8ad5 100644
--- a/indra/newview/skins/default/xui/en/panel_progress.xml
+++ b/indra/newview/skins/default/xui/en/panel_progress.xml
@@ -106,6 +106,28 @@
                      top="145"
                      right="-90"
                      word_wrap="true"/>
+                    <icon
+                     height="24"
+                     width="91"
+                     left="48"
+                     top="190"
+                     name="fmod_logo"
+                     visible ="false"
+                      />
+                    <text
+                     follows="left|right|top|bottom"
+                     layout="topleft"
+                     font_shadow="none"
+                     halign="left"
+                     height="16"
+                     width="400"
+                     top_delta="10"
+                     left_pad="4"
+                     line_spacing.pixels="2"
+                     name="fmod_text"
+                     text_color="LoginProgressBoxTextColor">
+                      Made with FMOD Studio by Firelight Technologies Pty Ltd.
+                    </text>
                 </layout_panel>
                 <layout_panel
                  height="200"
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 572c84c396a..b9e42139e69 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -497,6 +497,11 @@ def construct(self):
                     self.path("*.png")
                     self.path("*.gif")
 
+        # Copy 3p icons
+        with self.prefix(src=os.path.join(pkgdir, "icons"), dst="3p_icons"):
+            if self.args['fmodstudio'] == 'ON':
+                self.path("fmod.png")
+
         # Plugin host application
         self.path2basename(os.path.join(os.pardir,
                                         'llplugin', 'slplugin', self.args['configuration']),
@@ -966,6 +971,11 @@ def construct(self):
                 with self.prefix(src=pkgdir,dst=""):
                     self.path("ca-bundle.crt")
 
+                # Copy 3p icons
+                with self.prefix(src=os.path.join(pkgdir, "icons"), dst="3p_icons"):
+                    if self.args['fmodstudio'] == 'ON':
+                        self.path("fmod.png")
+
                 # Translations
                 self.path("English.lproj/language.txt")
                 self.replace_in(src="English.lproj/InfoPlist.strings",
@@ -1466,6 +1476,11 @@ def construct(self):
         relpkgdir = os.path.join(pkgdir, "lib", "release")
         debpkgdir = os.path.join(pkgdir, "lib", "debug")
 
+        # Copy 3p icons
+        with self.prefix(src=os.path.join(pkgdir, "icons"), dst="3p_icons"):
+            if self.args['fmodstudio'] == 'ON':
+                self.path("fmod.png")
+
         with self.prefix(src=relpkgdir, dst="lib"):
             self.path("libapr-1.so")
             self.path("libapr-1.so.0")
-- 
GitLab