diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml
index 48cbc704de..e16b3e970e 100644
--- a/.github/workflows/build_viewer.yml
+++ b/.github/workflows/build_viewer.yml
@@ -93,11 +93,11 @@ jobs:
with:
swap-storage: false
- - name: Set gcc version on Linux
- if: runner.os == 'Linux'
- run: |
- echo "CC=gcc-10" >> $GITHUB_ENV
- echo "CXX=g++-10" >> $GITHUB_ENV
+ # - name: Set gcc version on Linux
+ # if: runner.os == 'Linux'
+ # run: |
+ # echo "CC=gcc-10" >> $GITHUB_ENV
+ # echo "CXX=g++-10" >> $GITHUB_ENV
- name: Setup rclone and download the folder
diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h
index f943cfc81d..e66ff5a292 100644
--- a/indra/llui/llfloaterreg.h
+++ b/indra/llui/llfloaterreg.h
@@ -123,7 +123,18 @@ public:
static bool destroyInstance(const std::string& name, const LLSD& key = LLSD());
// Iterators
+ // ignore dangling reference false positives in gcc13
+#if defined(__GNUC__) && (__GNUC__ >= 13)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-reference"
+#endif
+ //
static const_instance_list_t& getFloaterList(const std::string& name);
+ // ignore dangling reference false positives in gcc13
+#if defined(__GNUC__) && (__GNUC__ >= 13)
+#pragma GCC diagnostic pop
+#endif
+ //
// Visibility Management
// [RLVa:KB] - Checked: 2012-02-07 (RLVa-1.4.5) | Added: RLVa-1.4.5
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 94e7de333f..98ec86305b 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -1656,7 +1656,7 @@ ECursorType LLWindowMacOSX::getCursor() const
// Legacy cursor setting from main program
//void LLWindowMacOSX::initCursors()
-void LLWindowMacOSX::initCursors(BOOL useLegacyCursors)
+void LLWindowMacOSX::initCursors(bool useLegacyCursors)
{
initPixmapCursor(UI_CURSOR_NO, 8, 8);
initPixmapCursor(UI_CURSOR_WORKING, 1, 1);
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index f66b66db1b..e3589603bc 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -159,7 +159,7 @@ protected:
~LLWindowMacOSX();
//void initCursors();
- void initCursors(BOOL useLegacyCursors); // Legacy cursor setting from main program
+ void initCursors(bool useLegacyCursors); // Legacy cursor setting from main program
bool isValid() override;
void moveWindow(const LLCoordScreen& position,const LLCoordScreen& size);
diff --git a/indra/newview/fsfloaterim.cpp b/indra/newview/fsfloaterim.cpp
index d66c9b5961..fc176e3dc0 100644
--- a/indra/newview/fsfloaterim.cpp
+++ b/indra/newview/fsfloaterim.cpp
@@ -471,13 +471,42 @@ void FSFloaterIM::sendMsgFromInputEditor(EChatType type)
if (FSData::getInstance()->isTestingGroup(mSessionID))
{
if(chat_prefix_testing)
- utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getInstance()->getBuildVersion() + skin_indicator + str_viewer_mode + str_rlv_enabled + str_opensim_tag + ") "));
+ {
+ auto viewer_maturity = LLVersionInfo::getInstance()->getFSViewerMaturity();
+ if( viewer_maturity == LLVersionInfo::FSViewerMaturity::RELEASE_VIEWER )
+ {
+ utf8_text.insert(insert_pos, "(Release) ");
+ }
+ else if( viewer_maturity == LLVersionInfo::FSViewerMaturity::UNOFFICIAL_VIEWER )
+ {
+ utf8_text.insert(insert_pos, "(Unofficial) ");
+ }
+ else // In testing groups we'll allow all non-release recognised channels.
+ {
+ utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getInstance()->getBuildVersion() + skin_indicator + str_viewer_mode + str_rlv_enabled + str_opensim_tag + ") "));
+ }
+ }
+
}
//For release support groups, only display the short version(Major.Minor.Patch) since chat can speed by. This makes it easier on Support's eyes.
else if(FSData::getInstance()->isSupportGroup(mSessionID))
{
if(chat_prefix_support)
- utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getInstance()->getShortVersion() + skin_indicator + str_viewer_mode + str_rlv_enabled + str_opensim_tag + ") "));
+ {
+ auto viewer_maturity = LLVersionInfo::getInstance()->getFSViewerMaturity();
+ if( viewer_maturity == LLVersionInfo::FSViewerMaturity::UNOFFICIAL_VIEWER )
+ {
+ utf8_text.insert(insert_pos, "(Unofficial) ");
+ }
+ else if( viewer_maturity != LLVersionInfo::FSViewerMaturity::RELEASE_VIEWER )
+ {
+ utf8_text.insert(insert_pos, "(pre-Release) ");
+ }
+ else
+ {
+ utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getInstance()->getShortVersion() + skin_indicator + str_viewer_mode + str_rlv_enabled + str_opensim_tag + ") "));
+ }
+ }
}
}
diff --git a/indra/newview/gltf/primitive.cpp b/indra/newview/gltf/primitive.cpp
index e1579374d4..549c558ff6 100644
--- a/indra/newview/gltf/primitive.cpp
+++ b/indra/newview/gltf/primitive.cpp
@@ -134,6 +134,13 @@ struct MikktMesh
idx[1] = tri_idx + 1;
idx[2] = tri_idx + 2;
}
+ // unknown mode leaves idx uninitialised
+ else
+ {
+ LL_WARNS("GLTF") << "Unsupported primitive mode for conversion to triangles: " << (S32) prim->mMode << LL_ENDL;
+ return false;
+ }
+ //
if (indexed)
{
diff --git a/indra/newview/llfloateravatar.h b/indra/newview/llfloateravatar.h
index b1b504a0ba..6d9a4b1a5a 100644
--- a/indra/newview/llfloateravatar.h
+++ b/indra/newview/llfloateravatar.h
@@ -43,7 +43,7 @@ private:
LLMediaCtrl* mAvatarPicker;
// Avatar chooser does not change between OpenSim grids
- /*virtual*/ void onOpen(const LLSD& key);
+ /*virtual*/ void onOpen(const LLSD& key) override;
void handleUrlChanged(const std::string& url);
boost::signals2::connection mAvatarPickerUrlChangedSignal;
diff --git a/indra/newview/llfloaterbump.h b/indra/newview/llfloaterbump.h
index 7f618aa324..fff4d95280 100644
--- a/indra/newview/llfloaterbump.h
+++ b/indra/newview/llfloaterbump.h
@@ -49,7 +49,7 @@ public:
void onOpen(const LLSD& key) override;
// Instant bump list floater update
- /*virtual*/ void draw();
+ /*virtual*/ void draw() override;
void setDirty() { mDirty = true; }
static LLFloaterBump* getInstance();
diff --git a/indra/newview/llfloaterpathfindingcharacters.cpp b/indra/newview/llfloaterpathfindingcharacters.cpp
index 0df0e3c9ec..f4829f0352 100644
--- a/indra/newview/llfloaterpathfindingcharacters.cpp
+++ b/indra/newview/llfloaterpathfindingcharacters.cpp
@@ -36,12 +36,18 @@
#include "llfloaterreg.h"
#include "llfloaterpathfindingobjects.h"
#include "llhandle.h"
+// hacky BOOL workaround
+#ifndef BOOL
+#define BOOL bool
+#endif
+//
#include "llpathfindingcharacter.h"
#include "llpathfindingcharacterlist.h"
#include "llpathfindingmanager.h"
#include "llpathfindingobject.h"
#include "llpathfindingobjectlist.h"
#include "llpathinglib.h"
+#undef BOOL // hacky BOOL workaround
#include "llquaternion.h"
#include "llsd.h"
#include "lluicolortable.h"
diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h
index bcbc94e10e..fe0a9290ca 100644
--- a/indra/newview/llfloaterpathfindingconsole.h
+++ b/indra/newview/llfloaterpathfindingconsole.h
@@ -33,9 +33,15 @@
#include "llfloater.h"
#include "llhandle.h"
+// hacky BOOL workaround
+#ifndef BOOL
+#define BOOL bool
+#endif
+//
#include "llpathfindingnavmeshzone.h"
#include "llpathfindingpathtool.h"
#include "llpathinglib.h"
+#undef BOOL // hacky BOOL workaround
#include "v4color.h"
class LLButton;
diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp
index 5e7bc4fb3b..1eb0072eb6 100644
--- a/indra/newview/llpathfindingmanager.cpp
+++ b/indra/newview/llpathfindingmanager.cpp
@@ -41,6 +41,11 @@
#include "llagent.h"
#include "llhttpnode.h"
#include "llnotificationsutil.h"
+// hacky BOOL workaround
+#ifndef BOOL
+#define BOOL bool
+#endif
+//
#include "llpathfindingcharacterlist.h"
#include "llpathfindinglinkset.h"
#include "llpathfindinglinksetlist.h"
@@ -48,6 +53,7 @@
#include "llpathfindingnavmeshstatus.h"
#include "llpathfindingobject.h"
#include "llpathinglib.h"
+#undef BOOL // hacky BOOL workaround
#include "llsingleton.h"
#include "llsd.h"
#include "lltrans.h"
diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp
index c9fbeba2f3..a0d999645c 100644
--- a/indra/newview/llpathfindingnavmesh.cpp
+++ b/indra/newview/llpathfindingnavmesh.cpp
@@ -139,7 +139,18 @@ void LLPathfindingNavMesh::handleNavMeshResult(const LLSD &pContent, U32 pNavMes
ENavMeshRequestStatus status;
if ( pContent.has(NAVMESH_DATA_FIELD) )
{
+ // ignore dangling reference false positives in gcc13
+#if defined(__GNUC__) && (__GNUC__ >= 13)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-reference"
+#endif
+ //
const LLSD::Binary &value = pContent.get(NAVMESH_DATA_FIELD).asBinary();
+ // ignore dangling reference false positives in gcc13
+#if defined(__GNUC__) && (__GNUC__ >= 13)
+#pragma GCC diagnostic pop
+#endif
+ //
auto binSize = value.size();
std::string newStr(reinterpret_cast(&value[0]), binSize);
std::istringstream streamdecomp( newStr );
diff --git a/indra/newview/llpathfindingnavmeshzone.cpp b/indra/newview/llpathfindingnavmeshzone.cpp
index 012cc11eee..8f6da9d545 100644
--- a/indra/newview/llpathfindingnavmeshzone.cpp
+++ b/indra/newview/llpathfindingnavmeshzone.cpp
@@ -38,10 +38,16 @@
#include
#include "llagent.h"
+// hacky BOOL workaround
+#ifndef BOOL
+#define BOOL bool
+#endif
+//
#include "llpathfindingmanager.h"
#include "llpathfindingnavmesh.h"
#include "llpathfindingnavmeshstatus.h"
#include "llpathinglib.h"
+#undef BOOL // hacky BOOL workaround
#include "llsd.h"
#include "lluuid.h"
#include "llviewercontrol.h"
diff --git a/indra/newview/llpathfindingpathtool.h b/indra/newview/llpathfindingpathtool.h
index 248af63cf0..943784909f 100644
--- a/indra/newview/llpathfindingpathtool.h
+++ b/indra/newview/llpathfindingpathtool.h
@@ -29,8 +29,13 @@
#include
#include
-
+// hacky BOOL workaround
+#ifndef BOOL
+#define BOOL bool
+#endif
+//
#include "llpathinglib.h"
+#undef BOOL // hacky BOOL workaround
#include "llsingleton.h"
#include "lltool.h"
diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp
index 36228ad91b..577dc55f5a 100644
--- a/indra/newview/llversioninfo.cpp
+++ b/indra/newview/llversioninfo.cpp
@@ -211,7 +211,47 @@ LLVersionInfo::ViewerMaturity LLVersionInfo::getViewerMaturity()
}
return maturity;
}
+// Add FS specific maturity grading
+LLVersionInfo::FSViewerMaturity LLVersionInfo::getFSViewerMaturity()
+{
+ FSViewerMaturity maturity;
+ std::string channel = getChannel();
+
+
+ static const boost::regex is_manual_channel("\\bManualx64\\b");
+ static const boost::regex is_beta_channel("\\bBetax64\\b");
+ static const boost::regex is_alpha_channel("\\bAlphax64\\b");
+ static const boost::regex is_release_channel("\\bReleasex64\\b");
+ static const boost::regex is_nightly_channel("\\bNightlyx64\\b");
+
+ if (ll_regex_search(channel, is_release_channel))
+ {
+ maturity = FSViewerMaturity::RELEASE_VIEWER;
+ }
+ else if (ll_regex_search(channel, is_beta_channel))
+ {
+ maturity = FSViewerMaturity::BETA_VIEWER;
+ }
+ else if (ll_regex_search(channel, is_alpha_channel))
+ {
+ maturity = FSViewerMaturity::ALPHA_VIEWER;
+ }
+ else if (ll_regex_search(channel, is_manual_channel))
+ {
+ maturity = FSViewerMaturity::MANUAL_VIEWER;
+ }
+ else if (ll_regex_search(channel, is_nightly_channel))
+ {
+ maturity = FSViewerMaturity::NIGHTLY_VIEWER;
+ }
+ else
+ {
+ maturity = FSViewerMaturity::UNOFFICIAL_VIEWER;
+ }
+ return maturity;
+}
+//
std::string LLVersionInfo::getReleaseNotes()
{
return mReleaseNotes;
diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h
index 3830e45f48..99bf255f74 100644
--- a/indra/newview/llversioninfo.h
+++ b/indra/newview/llversioninfo.h
@@ -109,6 +109,20 @@ public:
} ViewerMaturity;
ViewerMaturity getViewerMaturity();
+// Add an FS specific viewer maturity enum
+ using FSViewerMaturity =
+ enum class FSViewerMaturityEnum
+ {
+ UNOFFICIAL_VIEWER=0,
+ ALPHA_VIEWER,
+ MANUAL_VIEWER,
+ BETA_VIEWER,
+ NIGHTLY_VIEWER,
+ RELEASE_VIEWER,
+ };
+ FSViewerMaturity getFSViewerMaturity();
+//
+
/// get the release-notes URL, once it becomes available -- until then,
/// return empty string
std::string getReleaseNotes();
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 83f564c6e3..13b8ba19b2 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -103,7 +103,13 @@
#include "llmutelist.h"
#include "lltoolpie.h"
#include "llnotifications.h"
+// hacky BOOL workaround
+#ifndef BOOL
+#define BOOL bool
+#endif
+//
#include "llpathinglib.h"
+#undef BOOL // hacky BOOL workaround
#include "llfloaterpathfindingconsole.h"
#include "llfloaterpathfindingcharacters.h"
#include "llfloatertools.h"
diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp
index 615c1932b0..1057907f00 100644
--- a/indra/newview/rlvcommon.cpp
+++ b/indra/newview/rlvcommon.cpp
@@ -490,7 +490,14 @@ void RlvUtil::filterLocation(std::string& strUTF8Text)
{
// Filter any mention of the surrounding region names
LLWorld::region_list_t regions = LLWorld::getInstance()->getRegionList();
+#if defined(__GNUC__) && (__GNUC__ >= 13)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-reference"
+#endif
const std::string& strHiddenRegion = RlvStrings::getString(RlvStringKeys::Hidden::Region);
+#if defined(__GNUC__) && (__GNUC__ >= 13)
+#pragma GCC diagnostic pop
+#endif
for (LLWorld::region_list_t::const_iterator itRegion = regions.begin(); itRegion != regions.end(); ++itRegion)
boost::replace_all_regex(strUTF8Text, boost::regex("\\b" + escape_for_regex((*itRegion)->getName()) + "\\b", boost::regex::icase), strHiddenRegion);
diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp
index 2f73e001e2..aeabda1ae4 100644
--- a/indra/newview/rlvhandler.cpp
+++ b/indra/newview/rlvhandler.cpp
@@ -374,7 +374,14 @@ void RlvHandler::getAttachmentResourcesCoro(const std::string& strUrl)
for (LLSD::array_const_iterator itAttachObj = sdAttachObjects.beginArray(), endAttachObj = sdAttachObjects.endArray(); itAttachObj != endAttachObj; ++itAttachObj)
{
const LLUUID idObj = itAttachObj->get("id").asUUID();
+#if defined(__GNUC__) && (__GNUC__ >= 13)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-reference"
+#endif
const std::string& strObjName = itAttachObj->get("name").asStringRef();
+#if defined(__GNUC__) && (__GNUC__ >= 13)
+#pragma GCC diagnostic pop
+#endif
// If it's an attachment, it should be a temporary one (NOTE: we might catch it before it's had a chance to attach)
const LLViewerObject* pObj = gObjectList.findObject(idObj);
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 6ad6235c21..2727dff1d6 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1425,6 +1425,9 @@ class Darwin_x86_64_Manifest(ViewerManifest):
idnadir = os.path.join(pkgdir, "lib", "python", "idna")
with self.prefix(src="", dst="Contents"): # everything goes in Contents
+ with self.prefix(dst="MacOS"):
+ executable = self.dst_path_of("Firestorm") # locate the executable within the bundle.
+
bugsplat_db = self.args.get('bugsplat')
print(f"debug: bugsplat_db={bugsplat_db}")
if bugsplat_db:
@@ -1535,10 +1538,11 @@ class Darwin_x86_64_Manifest(ViewerManifest):
self.path(libfile)
oldpath = os.path.join("@rpath", libfile)
+ print(f"debug: oldpath={oldpath} executable={executable} libfile={libfile}")
self.run_command(
- ['install_name_tool', '-change', oldpath,
- '@executable_path/../Resources/%s' % libfile,
- executable])
+ ['install_name_tool', '-change',
+ oldpath,
+ '@executable_path/../Resources/%s' % libfile, executable])
# dylibs is a list of all the .dylib files we expect to need
# in our bundled sub-apps. For each of these we'll create a
@@ -1952,6 +1956,7 @@ class Darwin_x86_64_Manifest(ViewerManifest):
for tries in range(10):
try:
self.run_command(['hdiutil', 'detach', '-force', devfile])
+ break # Exit loop if detach worked
except ManifestError as err:
print(f"detach failed on attempt {tries}")
time.sleep(1)