From d89f3d25c3e680b9ab80cf4e6c9c26e2ac49d957 Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Mon, 21 Aug 2023 19:39:43 +0200 Subject: [PATCH 01/39] Bug / compile error - fix. path is treated as a null-terminated string, which is only guaranteed when the buffer that strncpy copies to is at least one larger than the maximum number of characters copied (the third argument). Without this patch, g++ 13.2.1 gives a warning turned into an error. --- indra/llcommon/llapp.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp index 284bfb2afa..b910b9903b 100644 --- a/indra/llcommon/llapp.cpp +++ b/indra/llcommon/llapp.cpp @@ -828,11 +828,11 @@ bool unix_post_minidump_callback(const char *dump_dir, auto dirPathLength = strlen(dump_dir); auto idLength = strlen(minidump_id); - // The path must not be truncated. - llassert((dirPathLength + idLength + 5) <= LLApp::MAX_MINDUMP_PATH_LENGTH); + // The path must not be truncated, and we need to have room left for a terminating zero. + llassert((dirPathLength + idLength + 5) < LLApp::MAX_MINDUMP_PATH_LENGTH); char * path = LLApp::instance()->getMiniDumpFilename(); - auto remaining = LLApp::MAX_MINDUMP_PATH_LENGTH; + auto remaining = LLApp::MAX_MINDUMP_PATH_LENGTH - 1; strncpy(path, dump_dir, remaining); remaining -= dirPathLength; path += dirPathLength; From a24ba60d4c208fe5993290e1fa63dbc37e6e8b8f Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Thu, 24 Aug 2023 16:18:02 +0200 Subject: [PATCH 02/39] Fix compile error. Looks like code duplication that was never fixed because nobody ever compiles with asserts turned on (ouch). --- indra/newview/llmodelpreview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index 1f75e1b590..dcada3c7d1 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -2523,7 +2523,7 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, S32 meshopt_mode, U32 d out << "Invalid level of detail: " << which_lod; LL_WARNS() << out.str() << LL_ENDL; LLFloaterModelPreview::addStringToLog(out, true); // if you don't flash the log tab on error when do you? - assert(lod >= -1 && lod < LLModel::NUM_LODS); + assert(which_lod >= -1 && which_lod < LLModel::NUM_LODS); return; } From 488bb36c33ff1921a92cce7897e0cd2cad2d4ae0 Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 24 Aug 2023 19:44:12 +0100 Subject: [PATCH 03/39] Add FS tags for future LL merges I know it's Linux but we can live in hope right? --- indra/llcommon/llapp.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp index b910b9903b..e3bb661c63 100644 --- a/indra/llcommon/llapp.cpp +++ b/indra/llcommon/llapp.cpp @@ -829,10 +829,10 @@ bool unix_post_minidump_callback(const char *dump_dir, auto idLength = strlen(minidump_id); // The path must not be truncated, and we need to have room left for a terminating zero. - llassert((dirPathLength + idLength + 5) < LLApp::MAX_MINDUMP_PATH_LENGTH); + llassert((dirPathLength + idLength + 5) < LLApp::MAX_MINDUMP_PATH_LENGTH); // Buffer overrun avoidance (from Aleric Inglewood) char * path = LLApp::instance()->getMiniDumpFilename(); - auto remaining = LLApp::MAX_MINDUMP_PATH_LENGTH - 1; + auto remaining = LLApp::MAX_MINDUMP_PATH_LENGTH - 1; // Buffer overrun avoidance (from Aleric Inglewood strncpy(path, dump_dir, remaining); remaining -= dirPathLength; path += dirPathLength; From 7152519f4b6f39d60acc6262581ccb71234ef201 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Thu, 24 Aug 2023 23:44:19 +0200 Subject: [PATCH 04/39] Updated Polish translation --- indra/newview/skins/default/xui/pl/floater_tools.xml | 1 + indra/newview/skins/default/xui/pl/menu_viewer.xml | 9 ++++++--- .../newview/skins/default/xui/pl/sidepanel_task_info.xml | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml index 997937111b..7ddf0afa2b 100644 --- a/indra/newview/skins/default/xui/pl/floater_tools.xml +++ b/indra/newview/skins/default/xui/pl/floater_tools.xml @@ -218,6 +218,7 @@ + diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml index 77d8db0bef..ffad3af549 100644 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml @@ -122,7 +122,9 @@ - + + + @@ -542,14 +544,15 @@ - + + + - diff --git a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml index 108d1a4457..67534ecc0a 100644 --- a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml @@ -76,6 +76,7 @@ + From d3f5194b6a57cfe570e70a3eb78e47171a449a17 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Fri, 25 Aug 2023 00:07:28 +0200 Subject: [PATCH 05/39] FIRE-33190 French translation update, by Laurent Bechir --- indra/newview/skins/default/xui/fr/floater_tools.xml | 1 + indra/newview/skins/default/xui/fr/menu_viewer.xml | 4 +++- indra/newview/skins/default/xui/fr/sidepanel_task_info.xml | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml index e27c5796c1..a5c3ec48a6 100644 --- a/indra/newview/skins/default/xui/fr/floater_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_tools.xml @@ -206,6 +206,7 @@ + diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index aedfc165cb..6c191929dc 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -123,7 +123,9 @@ - + + + diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml index 0b2ac87876..a1285a2a3b 100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml @@ -75,6 +75,8 @@ + + From 169847adb5e5e7465836a4c995f817e8d733e16a Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Fri, 25 Aug 2023 00:25:36 +0200 Subject: [PATCH 06/39] Few few XML errors --- .../skins/default/xui/az/mime_types_linux.xml | 1 - .../skins/default/xui/fr/panel_login.xml | 4 +- .../skins/default/xui/it/floater_tools.xml | 55 +++++++++---------- 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/indra/newview/skins/default/xui/az/mime_types_linux.xml b/indra/newview/skins/default/xui/az/mime_types_linux.xml index 812ba1263c..b18206cb7e 100644 --- a/indra/newview/skins/default/xui/az/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/az/mime_types_linux.xml @@ -82,7 +82,6 @@ Şəkil - - - - Graphics settings - - - Choose settings for distance, water, lighting and more. - - - - - - Avatars nearby - - - Manage which nearby avatars are fully displayed. - - -Time spent -drawing -avatars - - - 00% - - - - - - Your avatar complexity - - - Be a good citizen. Manage the impact of your avatar - - - - - - Your active HUDs - - - Removing unnecessary HUDs may improve speed. - - -Time spent -drawing -HUDs - - - 00% - - - + bevel_style="none" + follows="left|top" + height="540" + width="580" + name="panel_performance_main" + visible="true" + layout="topleft" + left="0" + top="60"> + + Auto-adjust settings (recommended) + + + Allow automatic adjustments to reach your preferred frame rate. + + + + + + Graphics settings + + + Choose settings for distance, water, lighting and more. + + + + - Preferred frame rate + width="205"> + Avatars nearby - Allow automatic adjustments to reach your preferred frame rate (advanced). + width="395"> + Manage which nearby avatars are fully displayed. + + + + + + Your avatar complexity + + + Reduce the complexity of your avatar if you aren't satisfied with current FPS. + + + + + + Your active HUDs + + + Removing HUDs you are not using can improve speed. + filename="panel_performance_nearby.xml" + follows="all" + layout="topleft" + left="0" + name="panel_performance_nearby" + visible="false" + top="55" /> + filename="panel_performance_complexity.xml" + follows="all" + layout="topleft" + left="0" + name="panel_performance_complexity" + visible="false" + top="55" /> + filename="panel_performance_preferences.xml" + follows="all" + layout="topleft" + left="0" + name="panel_performance_preferences" + visible="false" + top="55" /> Date: Mon, 28 Aug 2023 13:37:18 +0100 Subject: [PATCH 20/39] Update autobuild for KDU-8.3 --- autobuild.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 06edbfb812..f3fc0d5734 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1707,7 +1707,7 @@ hash e99b86fc3ed48a778580dd1449f8f33b url - file:///opt/firestorm/kdu-8.2-darwin-212431232.tar.bz2 + file:///opt/firestorm/kdu-8.3-darwin64-232392239.tar.bz2 name darwin64 @@ -1719,7 +1719,7 @@ hash c4dd59fbb0709fc4c7b5ab69b20246f8 url - file:///opt/firestorm/kdu-8.2-linux64_bionic-220911445.tar.bz2 + file:///opt/firestorm/kdu-8.3-linux64-232392238.tar.bz2 name linux64 @@ -1731,7 +1731,7 @@ hash e88372fa10b83c6900443dcc12c12338 url - file:///c:/cygwin/opt/firestorm/kdu-8.2-windows-212351246.tar.bz2 + file:///c:/cygwin/opt/firestorm/kdu-8.3-windows-232392239.tar.bz2 name windows @@ -1743,7 +1743,7 @@ hash e88372fa10b83c6900443dcc12c12338 url - file:///c:/cygwin/opt/firestorm/kdu-8.2-windows-212351246.tar.bz2 + file:///c:/cygwin/opt/firestorm/kdu-8.3-windows64-232392239.tar.bz2 name windows64 From c9575bf8b72e19b5a59c175fef1f50dde6cede1f Mon Sep 17 00:00:00 2001 From: Ansariel Date: Mon, 28 Aug 2023 14:55:04 +0200 Subject: [PATCH 21/39] 3p KDU for Windows contains both 32 and 64 bit version --- autobuild.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autobuild.xml b/autobuild.xml index f3fc0d5734..aa778db2ba 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1743,7 +1743,7 @@ hash e88372fa10b83c6900443dcc12c12338 url - file:///c:/cygwin/opt/firestorm/kdu-8.3-windows64-232392239.tar.bz2 + file:///c:/cygwin/opt/firestorm/kdu-8.3-windows-232392239.tar.bz2 name windows64 From bcb701af65344ea36b71d6bbcfc2c982879936cd Mon Sep 17 00:00:00 2001 From: Beq Date: Mon, 28 Aug 2023 14:05:17 +0100 Subject: [PATCH 22/39] How about the checksums too, Beq? --- autobuild.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index aa778db2ba..866a93a303 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1705,7 +1705,7 @@ archive hash - e99b86fc3ed48a778580dd1449f8f33b + 3142fccbcc0e2c5a019e3177ef364290 url file:///opt/firestorm/kdu-8.3-darwin64-232392239.tar.bz2 @@ -1717,7 +1717,7 @@ archive hash - c4dd59fbb0709fc4c7b5ab69b20246f8 + e13d6fe708613bb3a5d630c4cdd97a3b url file:///opt/firestorm/kdu-8.3-linux64-232392238.tar.bz2 @@ -1729,7 +1729,7 @@ archive hash - e88372fa10b83c6900443dcc12c12338 + 4aa7df19125708580055b42190d2511e url file:///c:/cygwin/opt/firestorm/kdu-8.3-windows-232392239.tar.bz2 @@ -1741,7 +1741,7 @@ archive hash - e88372fa10b83c6900443dcc12c12338 + 4aa7df19125708580055b42190d2511e url file:///c:/cygwin/opt/firestorm/kdu-8.3-windows-232392239.tar.bz2 From 208a896f3fb2d5100ad316e156b49e3ba2de0983 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Mon, 28 Aug 2023 16:06:15 +0200 Subject: [PATCH 23/39] Fix CMake CMP0148 deprecation warning introduced with CMake 3.27.4 --- indra/cmake/Python.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/cmake/Python.cmake b/indra/cmake/Python.cmake index 1f954c8f65..573112eded 100644 --- a/indra/cmake/Python.cmake +++ b/indra/cmake/Python.cmake @@ -50,7 +50,7 @@ elseif (WINDOWS) ${pymaybe} ) endif() - include(FindPythonInterp) + find_package(Python3 COMPONENTS Interpreter) else() find_program(python python3) From 88cc136054542a7d4545f08764b7f02b43c9e09d Mon Sep 17 00:00:00 2001 From: Ansariel Date: Mon, 28 Aug 2023 16:06:43 +0200 Subject: [PATCH 24/39] Update FMOD Studio to 2.02.17 on Windows --- autobuild.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 866a93a303..a0c92bc22d 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1111,11 +1111,11 @@ archive hash - c1bce2b362c31345200297a4010626e9 + fb5a3f97091028859ffa8c2768536b52 hash_algorithm md5 url - file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.15-windows-231741106.tar.bz2 + file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.17-windows-232401332.tar.bz2 name windows @@ -1125,18 +1125,18 @@ archive hash - cd0e8f58fece3eac0b5ebe21f354bf8c + f8e4fdd3eafbd54c01f5f78d04b95bf8 hash_algorithm md5 url - file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.15-windows64-231741113.tar.bz2 + file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.17-windows64-232401329.tar.bz2 name windows64 version - 2.02.15 + 2.02.17 fontconfig @@ -1750,7 +1750,7 @@ version - 8.0.6 + 8.3 libhunspell From f1c0cd9a2f36540e19fbe1dfda5278dadd39cd81 Mon Sep 17 00:00:00 2001 From: Pork Chop Date: Tue, 29 Aug 2023 01:25:31 +1000 Subject: [PATCH 25/39] Update FMOD Studio to 2.02.17 on Linux --- autobuild.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index a0c92bc22d..57b99e74bd 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1097,11 +1097,11 @@ archive hash - 79fb2f09d2c81ed6464e11af36566910 + 8c82bd0fd9b544d02c8da1f9d921e964 hash_algorithm md5 url - file:///opt/firestorm/fmodstudio-2.02.15-linux64-231741426.tar.bz2 + file:///opt/firestorm/fmodstudio-2.02.17-linux64-232401431.tar.bz2 name linux64 From 0b772853bee90871f40e0e0b5c8a1ae88498742a Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Fri, 25 Aug 2023 16:54:41 +0200 Subject: [PATCH 26/39] Compile warning/error workaround. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For the life of me I can't figure out which variable is supposedly undefined: In file included from /usr/include/string.h:548, from /usr/include/c++/13.2.1/cstring:42, from /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/indra/llcommon/linden_common.h:54, from /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/indra/newview/llviewerprecompiledheaders.h:38, from /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/indra/newview/llenvironment.cpp:27: In function ‘void* memcpy(void*, const void*, size_t)’, inlined from ‘void boost::function2::move_assign(boost::function2&) [with R = void; T0 = const LLUUID&; T1 = LLViewerRegion*]’ at /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/build-linux-x86_64/packages/include/boost/function/function_template.hpp:993:24, inlined from ‘void boost::function2::swap(boost::function2&) [with R = void; T0 = const LLUUID&; T1 = LLViewerRegion*]’ at /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/build-linux-x86_64/packages/include/boost/function/function_template.hpp:862:22, inlined from ‘typename boost::enable_if_<(! boost::is_integral::value), boost::function&>::type boost::function::operator=(Functor) [with Functor = LLEnvironment::onRegionChange()::; R = void; T0 = const LLUUID&; T1 = LLViewerRegion*]’ at /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/build-linux-x86_64/packages/include/boost/function/function_template.hpp:1121:22, inlined from ‘void boost::signals2::slot::init_slot_function(const F&) [with F = LLEnvironment::onRegionChange()::; SlotFunction = boost::function; R = void; Args = {const LLUUID&, LLViewerRegion*}]’ at /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/build-linux-x86_64/packages/include/boost/signals2/detail/slot_template.hpp:160:24, inlined from ‘boost::signals2::slot::slot(const F&) [with F = LLEnvironment::onRegionChange()::; SlotFunction = boost::function; R = void; Args = {const LLUUID&, LLViewerRegion*}]’ at /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/build-linux-x86_64/packages/include/boost/signals2/detail/slot_template.hpp:85:27, inlined from ‘void LLEnvironment::onRegionChange()’ at /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/indra/newview/llenvironment.cpp:1150:52: /usr/include/bits/string_fortified.h:29:33: error: ‘*(unsigned char (*)[24])((char*)& + offsetof(boost::self_type, boost::function::.boost::function2::.boost::function_base::functor))’ may be used uninitialized [-Werror=maybe-uninitialized] 29 | return __builtin___memcpy_chk (__dest, __src, __len, | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ 30 | __glibc_objsize0 (__dest)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~ where llenvironment.cpp:1150 is: cur_region->setCapabilitiesReceivedCallback([](const LLUUID ®ion_id, LLViewerRegion* regionp) { LLEnvironment::instance(). requestRegion(); }); Nevertheless, this has never led to a crash as far as I know; so, probably a bogus warning indeed. --- indra/newview/llenvironment.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index 3505dce54f..c65fdec192 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -1141,7 +1141,18 @@ void LLEnvironment::onRegionChange() } if (!cur_region->capabilitiesReceived()) { +// GCC13 warning: maybe-uninitialized - probably bogus +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif +// cur_region->setCapabilitiesReceivedCallback([](const LLUUID ®ion_id, LLViewerRegion* regionp) { LLEnvironment::instance().requestRegion(); }); +// GCC13 warning: maybe-uninitialized - probably bogus +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic pop +#endif +// return; } requestRegion(); From 3dddbe6c7db427aae2bc11bfa7ee7a648a7d20d5 Mon Sep 17 00:00:00 2001 From: Beq Date: Mon, 28 Aug 2023 19:49:06 +0100 Subject: [PATCH 27/39] Update FMOD Studio to 2.02.17 on MacOs --- autobuild.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 57b99e74bd..b135c99810 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1083,11 +1083,11 @@ archive hash - 9d9f72f50cffe7443e4b58f009ffc1f4 + 8ee7c21f3f109cf4e1709e4af0b4bebf hash_algorithm md5 url - file:///opt/firestorm/fmodstudio-2.02.15-darwin64-9.tar.bz2 + file:///opt/firestorm/fmodstudio-2.02.17-darwin64-232401806.tar.bz2 name darwin64 From 50a51df93784a9e04efa99a30219dedf22629342 Mon Sep 17 00:00:00 2001 From: Beq Date: Mon, 28 Aug 2023 22:44:46 +0100 Subject: [PATCH 28/39] Add the independent llsd package to the requirements list current version is 1.2.1 however 1.0.0 seems to work fine --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1c8fa7fcf0..f1af8c21d1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ llbase>=1.2.11 -autobuild>=3.9.1 \ No newline at end of file +autobuild>=3.9.1 +llsd>=1.0.0 \ No newline at end of file From a9cb3926379e3cef4a31704854cfb1282c16aa02 Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Fri, 25 Aug 2023 17:08:35 +0200 Subject: [PATCH 29/39] Compile warning/error workaround. Tested by setting mat_normal to some magic value and then asserting that it was changed by the time we get here. --- indra/newview/llface.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index e52500ce3f..255b7d1038 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -2130,8 +2130,18 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, LLVector4a t; tangent_to_object.rotate(binormal_dir, t); LLVector4a binormal; +// GCC13 warning: maybe-uninitialized - probably bogus +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif +// mat_normal.rotate(t, binormal); - +// +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic pop +#endif +// //VECTORIZE THIS if (mDrawablep->isActive()) { From 45770ed08747eca141ed36f4c4c5065b33d441cb Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Fri, 25 Aug 2023 17:38:47 +0200 Subject: [PATCH 30/39] Fix linker error. missed this one. Including this header leads to a linker error when compiling without optimization because then the LLPanelTopInfoBar constructor isn't inlined. /usr/bin/ld: CMakeFiles/firestorm-bin.dir/llviewerwindow.cpp.o: in function `std::__cxx11::basic_string, std::allocator > LLSingletonBase::classname()': /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/indra/llcommon/llsingleton.h:126:(.text._ZN15LLSingletonBase9classnameI17LLPanelTopInfoBarEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEv[_ZN15LLSingletonBase9classnameI17LLPanelTopInfoBarEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEv]+0x1e): undefined reference to `typeinfo for LLPanelTopInfoBar' /usr/bin/ld: CMakeFiles/firestorm-bin.dir/llviewerwindow.cpp.o: in function `void LLSingleton::constructSingleton<>(llthread::LockStatic::SingletonData>&)': /opt/secondlife/viewers/firestorm/phoenix-firestorm-git/indra/llcommon/llsingleton.h:362:(.text._ZN11LLSingletonI17LLPanelTopInfoBarE18constructSingletonIJEEEvRN8llthread10LockStaticINS1_13SingletonDataEEEDpOT_[_ZN11LLSingletonI17LLPanelTopInfoBarE18constructSingletonIJEEEvRN8llthread10LockStaticINS1_13SingletonDataEEEDpOT_]+0x6b): undefined reference to `LLPanelTopInfoBar::LLPanelTopInfoBar()' --- indra/newview/llviewerwindow.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index dc382f8014..7eea05b16a 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -224,7 +224,8 @@ // [FS communication UI] #include "llwindowlistener.h" #include "llviewerwindowlistener.h" -#include "llpaneltopinfobar.h" +// We don't use the mini location panel in Firestorm +// #include "llpaneltopinfobar.h" #include "llcleanup.h" #include "llimview.h" #include "llviewermenufile.h" From 1a9a7d3b45d2710b128a3c71b2433a56a3a68d4e Mon Sep 17 00:00:00 2001 From: Ansariel Date: Tue, 29 Aug 2023 00:51:21 +0200 Subject: [PATCH 31/39] Add attachment point ID to "Attach to" menus (except HUD) to identify alpha sort order on rigged attachments --- indra/newview/llinventorybridge.cpp | 12 ++++++++++-- indra/newview/llviewerattachmenu.cpp | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index c9ed2693f4..2fe08b39f5 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -7495,11 +7495,19 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags) std::string submenu_name = attachment->getName(); if (LLTrans::getString(submenu_name) != "") { - p.name = (" ")+LLTrans::getString(submenu_name)+" "; + // Add attachment point ID to non-HUD attachment spots + if (attachment->getIsHUDAttachment()) + p.name = (" ")+LLTrans::getString(submenu_name)+" "; + else + p.name = (" ") + LLTrans::getString(submenu_name) + " (" + std::to_string(curiter->first) + ")" + " "; } else { - p.name = submenu_name; + if (attachment->getIsHUDAttachment()) + p.name = submenu_name; + else + p.name = submenu_name + " (" + std::to_string(curiter->first) + ")"; + // } LLSD cbparams; cbparams["index"] = curiter->first; diff --git a/indra/newview/llviewerattachmenu.cpp b/indra/newview/llviewerattachmenu.cpp index cce9a5f7a4..3a42291325 100644 --- a/indra/newview/llviewerattachmenu.cpp +++ b/indra/newview/llviewerattachmenu.cpp @@ -69,11 +69,19 @@ void LLViewerAttachMenu::populateMenus(const std::string& attach_to_menu_name, c if (LLTrans::findString(translated_submenu_name, submenu_name)) { - p.name = (" ") + translated_submenu_name + " "; + // Add attachment point ID to non-HUD attachment spots + if (attachment->getIsHUDAttachment()) + p.name = (" ") + translated_submenu_name + " "; + else + p.name = (" ") + translated_submenu_name + " (" + std::to_string(curiter->first) + ")" + " "; } else { - p.name = submenu_name; + if (attachment->getIsHUDAttachment()) + p.name = submenu_name; + else + p.name = submenu_name + " (" + std::to_string(curiter->first) + ")"; + // } LLSD cbparams; From 4521852ceeec9407b17c566b151748ea7ab5fced Mon Sep 17 00:00:00 2001 From: Ansariel Date: Tue, 29 Aug 2023 15:30:15 +0200 Subject: [PATCH 32/39] What is all this? --- indra/newview/fspanelcontactsets.cpp | 16 +-- indra/newview/fspanelcontactsets.h | 4 +- indra/newview/lggcontactsets.cpp | 158 +++++++++++---------------- indra/newview/lggcontactsets.h | 72 ++++++------ indra/newview/llpanelpeople.cpp | 10 +- 5 files changed, 118 insertions(+), 142 deletions(-) diff --git a/indra/newview/fspanelcontactsets.cpp b/indra/newview/fspanelcontactsets.cpp index eeb2403955..9e9f021ab5 100644 --- a/indra/newview/fspanelcontactsets.cpp +++ b/indra/newview/fspanelcontactsets.cpp @@ -42,12 +42,10 @@ #include "llpanelpeoplemenus.h" #include "llslurl.h" -const U32 MAX_SELECTIONS = 20; +constexpr U32 MAX_SELECTIONS = 20; static LLPanelInjector t_panel_contact_sets("contact_sets_panel"); FSPanelContactSets::FSPanelContactSets() : LLPanel() -, mContactSetCombo(NULL) -, mAvatarList(NULL) { mContactSetChangedConnection = LGGContactSets::getInstance()->setContactSetChangeCallback(boost::bind(&FSPanelContactSets::updateSets, this, _1)); } @@ -130,7 +128,7 @@ void FSPanelContactSets::generateAvatarList(const std::string& contact_set) ++buddy) { // Only show our buddies who aren't in a set, by request. - if (!LGGContactSets::getInstance()->isFriendInSet(buddy->first)) + if (!LGGContactSets::getInstance()->isFriendInAnySet(buddy->first)) avatars.push_back(buddy->first); } } @@ -144,10 +142,12 @@ void FSPanelContactSets::generateAvatarList(const std::string& contact_set) } else if (!LGGContactSets::getInstance()->isInternalSetName(contact_set)) { - LGGContactSets::ContactSet* group = LGGContactSets::getInstance()->getContactSet(contact_set); // UGLY! - for (auto const& id : group->mFriends) + if (LGGContactSets::ContactSet* group = LGGContactSets::getInstance()->getContactSet(contact_set); group)// UGLY! { - avatars.push_back(id); + for (auto const& id : group->mFriends) + { + avatars.push_back(id); + } } } getChild("member_count")->setTextArg("[COUNT]", llformat("%d", avatars.size())); @@ -198,7 +198,7 @@ void FSPanelContactSets::refreshContactSets() std::vector contact_sets = LGGContactSets::getInstance()->getAllContactSets(); if (!contact_sets.empty()) { - for(auto const& set_name : contact_sets) + for (auto const& set_name : contact_sets) { mContactSetCombo->add(set_name); } diff --git a/indra/newview/fspanelcontactsets.h b/indra/newview/fspanelcontactsets.h index 98f5deb4de..bde45e43d5 100644 --- a/indra/newview/fspanelcontactsets.h +++ b/indra/newview/fspanelcontactsets.h @@ -70,8 +70,8 @@ private: uuid_vec_t mAvatarSelections; - LLComboBox* mContactSetCombo; - LLAvatarList* mAvatarList; + LLComboBox* mContactSetCombo{ nullptr }; + LLAvatarList* mAvatarList{ nullptr }; }; #endif // FS_PANELCONTACTSETS_H diff --git a/indra/newview/lggcontactsets.cpp b/indra/newview/lggcontactsets.cpp index e4addd821f..f0605d06b3 100644 --- a/indra/newview/lggcontactsets.cpp +++ b/indra/newview/lggcontactsets.cpp @@ -39,12 +39,11 @@ #include "rlvactions.h" #include "rlvhandler.h" -const F32 COLOR_DAMPENING = 0.8f; +constexpr F32 COLOR_DAMPENING = 0.8f; const std::string CONTACT_SETS_FILE = "settings_friends_groups.xml"; const std::string CS_PSEUDONYM_QUOTED = "'--- ---'"; LGGContactSets::LGGContactSets() -: mDefaultColor(LLColor4::grey) { } @@ -73,15 +72,14 @@ void LGGContactSets::toneDownColor(LLColor4& color) const bool LGGContactSets::callbackAliasReset(const LLSD& notification, const LLSD& response) { - S32 option = LLNotification::getSelectedOption(notification, response); - if (option == 0) + if (S32 option = LLNotification::getSelectedOption(notification, response); option == 0) { clearPseudonym(notification["payload"]["agent_id"].asUUID()); } return false; } -std::string LGGContactSets::getFilename() +std::string LGGContactSets::getFilename() const { std::string path = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, ""); @@ -92,7 +90,7 @@ std::string LGGContactSets::getFilename() return path; } -std::string LGGContactSets::getDefaultFilename() +std::string LGGContactSets::getDefaultFilename() const { std::string path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, ""); @@ -107,8 +105,7 @@ LLSD LGGContactSets::exportContactSet(std::string_view set_name) { LLSD ret; - ContactSet* set = getContactSet(set_name); - if (set) + if (ContactSet* set = getContactSet(set_name); set) { ret["groupname"] = set->mName; ret["color"] = set->mColor.getValue(); @@ -199,27 +196,25 @@ LLSD LGGContactSets::exportToLLSD() output[CS_GLOBAL_SETTINGS]["defaultColor"] = mDefaultColor.getValue(); // Extra avatars - for (uuid_set_t::iterator it = mExtraAvatars.begin(); it != mExtraAvatars.end(); ++it) + for (const auto& avid : mExtraAvatars) { - output[CS_SET_EXTRA_AVS][(*it).asString()] = ""; + output[CS_SET_EXTRA_AVS][avid.asString()] = ""; } // Pseudonyms - for (uuid_map_t::iterator it = mPseudonyms.begin(); it != mPseudonyms.end(); ++it) + for (const auto& [avid, pseudonym] : mPseudonyms) { - output[CS_SET_PSEUDONYM][it->first.asString()] = it->second; + output[CS_SET_PSEUDONYM][avid.asString()] = pseudonym; } // Contact Sets - for (contact_set_map_t::iterator it = mContactSets.begin(); it != mContactSets.end(); ++it) + for (const auto& [name, set] : mContactSets) { - std::string name = it->first; - ContactSet* set = it->second; output[name]["color"] = set->mColor.getValue(); output[name]["notify"] = set->mNotify; - for (uuid_set_t::iterator friend_it = set->mFriends.begin(); friend_it != set->mFriends.end(); ++friend_it) + for (const auto& friend_id : set->mFriends) { - output[name]["friends"][(*friend_it).asString()] = ""; + output[name]["friends"][friend_id.asString()] = ""; } } @@ -300,10 +295,9 @@ void LGGContactSets::importFromLLSD(const LLSD& data) } } -LLColor4 LGGContactSets::getSetColor(std::string_view set_name) +LLColor4 LGGContactSets::getSetColor(std::string_view set_name) const { - ContactSet* set = getContactSet(set_name); - if (set) + if (ContactSet* set = getContactSet(set_name); set) { return set->mColor; } @@ -311,13 +305,12 @@ LLColor4 LGGContactSets::getSetColor(std::string_view set_name) return getDefaultColor(); }; -LLColor4 LGGContactSets::colorize(const LLUUID& uuid, const LLColor4& cur_color, ELGGCSType type) +LLColor4 LGGContactSets::colorize(const LLUUID& uuid, LLColor4 color, ELGGCSType type) const { static LLCachedControl legacy_radar_friend(gSavedSettings, "FSLegacyRadarFriendColoring"); static LLCachedControl legacy_radar_linden(gSavedSettings, "FSLegacyRadarLindenColoring"); bool rlv_shownames = !RlvActions::canShowName(RlvActions::SNC_DEFAULT, uuid); - LLColor4 color = cur_color; - + if (uuid == gAgentID) { switch (type) @@ -451,7 +444,7 @@ LLColor4 LGGContactSets::colorize(const LLUUID& uuid, const LLColor4& cur_color, return color; } -LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_view ignored_set_name) +LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_view ignored_set_name) const { LLColor4 color = getDefaultColor(); if (ignored_set_name == CS_SET_NO_SETS) @@ -460,8 +453,7 @@ LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_vie } U32 lowest = U32_MAX; - string_vec_t contact_sets = getFriendSets(friend_id); - for (const auto& set_name : contact_sets) + for (const auto& set_name : getFriendSets(friend_id)) { if (set_name != ignored_set_name) { @@ -474,7 +466,7 @@ LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_vie { lowest = set_size; - color = mContactSets[set_name]->mColor; + color = mContactSets.at(set_name)->mColor; if (isNonFriend(friend_id)) { toneDownColor(color); @@ -487,20 +479,20 @@ LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_vie { if (isFriendInSet(friend_id, ignored_set_name) && !isInternalSetName(ignored_set_name)) { - return mContactSets[ignored_set_name.data()]->mColor; + return mContactSets.at(ignored_set_name.data())->mColor; } } return color; } -bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type) +bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type) const { LLColor4 color = LLColor4::white; return hasFriendColorThatShouldShow(friend_id, type, color); } // handle all settings and rlv that would prevent us from showing the cs color -bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type, LLColor4& color) +bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type, LLColor4& color) const { if (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, friend_id)) { @@ -551,7 +543,7 @@ bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGC return true; } -string_vec_t LGGContactSets::getFriendSets(const LLUUID& friend_id) +string_vec_t LGGContactSets::getFriendSets(const LLUUID& friend_id) const { string_vec_t sets{}; @@ -565,7 +557,7 @@ string_vec_t LGGContactSets::getFriendSets(const LLUUID& friend_id) return sets; } -uuid_vec_t LGGContactSets::getFriendsInSet(std::string_view set_name) +uuid_vec_t LGGContactSets::getFriendsInSet(std::string_view set_name) const { uuid_vec_t friends; @@ -586,8 +578,7 @@ uuid_vec_t LGGContactSets::getFriendsInSet(std::string_view set_name) return getListOfNonFriends(); } - ContactSet* set = getContactSet(set_name); - if (set) + if (ContactSet* set = getContactSet(set_name); set) { for (const auto& id : set->mFriends) { @@ -598,7 +589,7 @@ uuid_vec_t LGGContactSets::getFriendsInSet(std::string_view set_name) return friends; } -string_vec_t LGGContactSets::getAllContactSets() +string_vec_t LGGContactSets::getAllContactSets() const { string_vec_t sets{}; @@ -610,7 +601,7 @@ string_vec_t LGGContactSets::getAllContactSets() return sets; } -uuid_vec_t LGGContactSets::getFriendsInAnySet() +uuid_vec_t LGGContactSets::getFriendsInAnySet() const { uuid_set_t friendsInAnySet{}; @@ -625,9 +616,9 @@ uuid_vec_t LGGContactSets::getFriendsInAnySet() return uuid_vec_t(friendsInAnySet.begin(), friendsInAnySet.end()); } -bool LGGContactSets::isFriendInSet(const LLUUID& friend_id) +bool LGGContactSets::isFriendInAnySet(const LLUUID& friend_id) const { - for (const auto& [set_name, set] : mContactSets) + for (const auto& [set_name, set] : mContactSets) { if (set->hasFriend(friend_id)) { @@ -638,15 +629,15 @@ bool LGGContactSets::isFriendInSet(const LLUUID& friend_id) return false; } -bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, std::string_view set_name) +bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, std::string_view set_name) const { if (set_name == CS_SET_ALL_SETS) { - return isFriendInSet(friend_id); + return isFriendInAnySet(friend_id); } else if (set_name == CS_SET_NO_SETS) { - return !isFriendInSet(friend_id); + return !isFriendInAnySet(friend_id); } else if (set_name == CS_SET_PSEUDONYM) { @@ -660,8 +651,7 @@ bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, std::string_view set if( set_name.empty() ) return false; - ContactSet* set = getContactSet(set_name); - if (set) + if (ContactSet* set = getContactSet(set_name); set) { return set->hasFriend(friend_id); } @@ -669,12 +659,11 @@ bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, std::string_view set return false; } -bool LGGContactSets::notifyForFriend(const LLUUID& friend_id) +bool LGGContactSets::notifyForFriend(const LLUUID& friend_id) const { - string_vec_t sets = getFriendSets(friend_id); - for (const auto& set_name : sets) + for (const auto& set_name : getFriendSets(friend_id)) { - if (mContactSets[set_name]->mNotify) + if (mContactSets.at(set_name)->mNotify) { return true; } @@ -706,8 +695,7 @@ void LGGContactSets::addToSet(const uuid_vec_t& avatar_ids, std::string_view set void LGGContactSets::removeNonFriendFromList(const LLUUID& non_friend_id, bool save_changes /*= true*/) { LLAvatarTracker& tracker = LLAvatarTracker::instance(); - uuid_set_t::iterator found = mExtraAvatars.find(non_friend_id); - if (found != mExtraAvatars.end()) + if (auto found = mExtraAvatars.find(non_friend_id); found != mExtraAvatars.end()) { mExtraAvatars.erase(found); @@ -727,14 +715,13 @@ void LGGContactSets::removeNonFriendFromList(const LLUUID& non_friend_id, bool s void LGGContactSets::removeFriendFromAllSets(const LLUUID& friend_id, bool save_changes /*= true*/) { - string_vec_t sets = getFriendSets(friend_id); - for (const auto& set_name : sets) + for (const auto& set_name : getFriendSets(friend_id)) { removeFriendFromSet(friend_id, set_name, save_changes); } } -bool LGGContactSets::isNonFriend(const LLUUID& non_friend_id) +bool LGGContactSets::isNonFriend(const LLUUID& non_friend_id) const { if (LLAvatarTracker::instance().isBuddy(non_friend_id)) { @@ -744,7 +731,7 @@ bool LGGContactSets::isNonFriend(const LLUUID& non_friend_id) return (mExtraAvatars.find(non_friend_id) != mExtraAvatars.end()); } -uuid_vec_t LGGContactSets::getListOfNonFriends() +uuid_vec_t LGGContactSets::getListOfNonFriends() const { LLAvatarTracker& tracker = LLAvatarTracker::instance(); uuid_vec_t nonfriends{}; @@ -760,7 +747,7 @@ uuid_vec_t LGGContactSets::getListOfNonFriends() return nonfriends; } -uuid_vec_t LGGContactSets::getListOfPseudonymAvs() +uuid_vec_t LGGContactSets::getListOfPseudonymAvs() const { uuid_vec_t pseudonyms{}; @@ -780,8 +767,7 @@ void LGGContactSets::setPseudonym(const LLUUID& friend_id, std::string_view pseu inst->fetch(friend_id); LLVOAvatar::invalidateNameTag(friend_id); - avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(friend_id); - if (it != mAvatarNameCacheConnections.end()) + if (auto it = mAvatarNameCacheConnections.find(friend_id); it != mAvatarNameCacheConnections.end()) { if (it->second.connected()) { @@ -793,10 +779,9 @@ void LGGContactSets::setPseudonym(const LLUUID& friend_id, std::string_view pseu saveToDisk(); } -std::string LGGContactSets::getPseudonym(const LLUUID& friend_id) +std::string LGGContactSets::getPseudonym(const LLUUID& friend_id) const { - uuid_map_t::iterator found = mPseudonyms.find(friend_id); - if (found != mPseudonyms.end()) + if (auto found = mPseudonyms.find(friend_id); found != mPseudonyms.end()) { return llformat("'%s'", found->second.c_str()); } @@ -805,8 +790,7 @@ std::string LGGContactSets::getPseudonym(const LLUUID& friend_id) void LGGContactSets::clearPseudonym(const LLUUID& friend_id, bool save_changes /*= true*/) { - uuid_map_t::iterator found = mPseudonyms.find(friend_id); - if (found != mPseudonyms.end()) + if (auto found = mPseudonyms.find(friend_id); found != mPseudonyms.end()) { mPseudonyms.erase(found); LLAvatarNameCache* inst = LLAvatarNameCache::getInstance(); @@ -818,8 +802,7 @@ void LGGContactSets::clearPseudonym(const LLUUID& friend_id, bool save_changes / removeNonFriendFromList(friend_id, save_changes); } - avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(friend_id); - if (it != mAvatarNameCacheConnections.end()) + if (auto it = mAvatarNameCacheConnections.find(friend_id); it != mAvatarNameCacheConnections.end()) { if (it->second.connected()) { @@ -837,8 +820,7 @@ void LGGContactSets::clearPseudonym(const LLUUID& friend_id, bool save_changes / void LGGContactSets::onAvatarNameCache(const LLUUID& av_id) { - avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(av_id); - if (it != mAvatarNameCacheConnections.end()) + if (auto it = mAvatarNameCacheConnections.find(av_id); it != mAvatarNameCacheConnections.end()) { if (it->second.connected()) { @@ -849,12 +831,12 @@ void LGGContactSets::onAvatarNameCache(const LLUUID& av_id) mChangedSignal(UPDATED_MEMBERS); } -bool LGGContactSets::hasPseudonym(const LLUUID& friend_id) +bool LGGContactSets::hasPseudonym(const LLUUID& friend_id) const { return (!getPseudonym(friend_id).empty()); } -bool LGGContactSets::hasPseudonym(uuid_vec_t ids) +bool LGGContactSets::hasPseudonym(const uuid_vec_t& ids) const { bool has_pseudonym = false; for (const auto& id : ids) @@ -868,12 +850,12 @@ bool LGGContactSets::hasPseudonym(uuid_vec_t ids) return has_pseudonym; } -bool LGGContactSets::hasDisplayNameRemoved(const LLUUID& friend_id) +bool LGGContactSets::hasDisplayNameRemoved(const LLUUID& friend_id) const { return (getPseudonym(friend_id) == CS_PSEUDONYM_QUOTED); } -bool LGGContactSets::hasDisplayNameRemoved(uuid_vec_t ids) +bool LGGContactSets::hasDisplayNameRemoved(const uuid_vec_t& ids) const { bool has_pseudonym = false; for (const auto& id : ids) @@ -887,7 +869,7 @@ bool LGGContactSets::hasDisplayNameRemoved(uuid_vec_t ids) return has_pseudonym; } -bool LGGContactSets::hasVisuallyDifferentPseudonym(const LLUUID& friend_id) +bool LGGContactSets::hasVisuallyDifferentPseudonym(const LLUUID& friend_id) const { return (hasPseudonym(friend_id) && (!hasDisplayNameRemoved(friend_id))); } @@ -908,8 +890,7 @@ void LGGContactSets::removeFriendFromSet(const LLUUID& friend_id, std::string_vi return clearPseudonym(friend_id, save_changes); } - ContactSet* set = getContactSet(set_name); - if (set) + if (ContactSet* set = getContactSet(set_name); set) { set->mFriends.erase(friend_id); if (save_changes) @@ -920,7 +901,7 @@ void LGGContactSets::removeFriendFromSet(const LLUUID& friend_id, std::string_vi } } -bool LGGContactSets::isValidSet(std::string_view set_name) +bool LGGContactSets::isValidSet(std::string_view set_name) const { return (mContactSets.find(set_name.data()) != mContactSets.end()); } @@ -995,10 +976,9 @@ void LGGContactSets::setNotifyForSet(std::string_view set_name, bool notify) } } -bool LGGContactSets::getNotifyForSet(std::string_view set_name) +bool LGGContactSets::getNotifyForSet(std::string_view set_name) const { - ContactSet* set = getContactSet(set_name); - if (set) + if (ContactSet* set = getContactSet(set_name); set) { return set->mNotify; } @@ -1007,15 +987,14 @@ bool LGGContactSets::getNotifyForSet(std::string_view set_name) void LGGContactSets::setSetColor(std::string_view set_name, const LLColor4& color) { - ContactSet* set = getContactSet(set_name); - if (set) + if (ContactSet* set = getContactSet(set_name); set) { set->mColor = color; saveToDisk(); } } -bool LGGContactSets::isInternalSetName(std::string_view set_name) +bool LGGContactSets::isInternalSetName(std::string_view set_name) const { return (set_name.empty() || set_name == CS_SET_EXTRA_AVS || @@ -1025,7 +1004,7 @@ bool LGGContactSets::isInternalSetName(std::string_view set_name) set_name == CS_GLOBAL_SETTINGS); } -LGGContactSets::ContactSet* LGGContactSets::getContactSet(std::string_view set_name) +LGGContactSets::ContactSet* LGGContactSets::getContactSet(std::string_view set_name) const { if (set_name.empty()) { @@ -1033,8 +1012,7 @@ LGGContactSets::ContactSet* LGGContactSets::getContactSet(std::string_view set_n return nullptr; } - contact_set_map_t::iterator found = mContactSets.find(set_name.data()); - if (found != mContactSets.end()) + if (auto found = mContactSets.find(set_name.data()); found != mContactSets.end()) { return found->second; } @@ -1042,7 +1020,7 @@ LGGContactSets::ContactSet* LGGContactSets::getContactSet(std::string_view set_n return nullptr; } -bool LGGContactSets::checkCustomName(const LLUUID& id, bool& dn_removed, std::string& pseudonym) +bool LGGContactSets::checkCustomName(const LLUUID& id, bool& dn_removed, std::string& pseudonym) const { dn_removed = hasDisplayNameRemoved(id); pseudonym = getPseudonym(id); @@ -1052,8 +1030,7 @@ bool LGGContactSets::checkCustomName(const LLUUID& id, bool& dn_removed, std::st // static bool LGGContactSets::handleAddContactSetCallback(const LLSD& notification, const LLSD& response) { - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option == 0) + if (S32 option = LLNotificationsUtil::getSelectedOption(notification, response); option == 0) { const std::string set_name = response["message"].asString(); LGGContactSets::getInstance()->addSet(set_name); @@ -1064,8 +1041,7 @@ bool LGGContactSets::handleAddContactSetCallback(const LLSD& notification, const // static bool LGGContactSets::handleRemoveContactSetCallback(const LLSD& notification, const LLSD& response) { - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option == 0) + if (S32 option = LLNotificationsUtil::getSelectedOption(notification, response); option == 0) { LGGContactSets::getInstance()->removeSet(notification["payload"]["contact_set"].asString()); } @@ -1075,8 +1051,7 @@ bool LGGContactSets::handleRemoveContactSetCallback(const LLSD& notification, co // static bool LGGContactSets::handleRemoveAvatarFromSetCallback(const LLSD& notification, const LLSD& response) { - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option == 0) + if (S32 option = LLNotificationsUtil::getSelectedOption(notification, response); option == 0) { LGGContactSets& instance = LGGContactSets::instance(); LLAvatarTracker& tracker = LLAvatarTracker::instance(); @@ -1085,7 +1060,7 @@ bool LGGContactSets::handleRemoveAvatarFromSetCallback(const LLSD& notification, it != notification["payload"]["ids"].endArray(); ++it) { - LLUUID id = it->asUUID(); + const LLUUID& id = it->asUUID(); std::string set_name = notification["payload"]["contact_set"].asString(); instance.removeFriendFromSet(id, set_name, false); @@ -1107,8 +1082,7 @@ bool LGGContactSets::handleRemoveAvatarFromSetCallback(const LLSD& notification, // static bool LGGContactSets::handleSetAvatarPseudonymCallback(const LLSD& notification, const LLSD& response) { - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option == 0) + if (S32 option = LLNotificationsUtil::getSelectedOption(notification, response); option == 0) { const std::string pseudonym(response["message"].asString()); const LLUUID id(notification["payload"]["id"].asUUID()); diff --git a/indra/newview/lggcontactsets.h b/indra/newview/lggcontactsets.h index c7607c4b57..61843d167a 100644 --- a/indra/newview/lggcontactsets.h +++ b/indra/newview/lggcontactsets.h @@ -22,9 +22,9 @@ #include "v4color.h" #include "llsingleton.h" +#include +#include #include -#include -#include typedef enum e_lgg_cs { @@ -51,63 +51,63 @@ class LGGContactSets : public LLSingleton public: typedef std::vector string_vec_t; - typedef boost::unordered_set uuid_set_t; + typedef std::unordered_set uuid_set_t; void loadFromDisk(); void setSetColor(std::string_view set_name, const LLColor4& color); - LLColor4 getSetColor(std::string_view set_name); - LLColor4 getFriendColor(const LLUUID& friend_id, std::string_view ignored_set_name = ""); - LLColor4 colorize(const LLUUID& uuid, const LLColor4& cur_color, ELGGCSType type); + LLColor4 getSetColor(std::string_view set_name) const; + LLColor4 getFriendColor(const LLUUID& friend_id, std::string_view ignored_set_name = "") const; + LLColor4 colorize(const LLUUID& uuid, LLColor4 color, ELGGCSType type) const; void setDefaultColor(const LLColor4& default_color) { mDefaultColor = default_color; }; - LLColor4 getDefaultColor() { return mDefaultColor; }; + LLColor4 getDefaultColor() const { return mDefaultColor; }; - std::string getPseudonym(const LLUUID& friend_id); - bool hasPseudonym(const LLUUID& friend_id); - bool hasPseudonym(uuid_vec_t ids); + std::string getPseudonym(const LLUUID& friend_id) const; + bool hasPseudonym(const LLUUID& friend_id) const; + bool hasPseudonym(const uuid_vec_t& ids) const; void clearPseudonym(const LLUUID& friend_id, bool save_changes = true); void removeDisplayName(const LLUUID& friend_id); - bool hasDisplayNameRemoved(const LLUUID& friend_id); - bool hasDisplayNameRemoved(uuid_vec_t ids); + bool hasDisplayNameRemoved(const LLUUID& friend_id) const; + bool hasDisplayNameRemoved(const uuid_vec_t& ids) const; - bool checkCustomName(const LLUUID& id, bool& dn_removed, std::string& pseudonym); + bool checkCustomName(const LLUUID& id, bool& dn_removed, std::string& pseudonym) const; - string_vec_t getFriendSets(const LLUUID& friend_id); - string_vec_t getAllContactSets(); + string_vec_t getFriendSets(const LLUUID& friend_id) const; + string_vec_t getAllContactSets() const; void addToSet(const uuid_vec_t&, std::string_view set_name); void removeFriendFromSet(const LLUUID& friend_id, std::string_view set_name, bool save_changes = true); void removeFriendFromAllSets(const LLUUID& friend_id, bool save_changes = true); - bool isFriendInSet(const LLUUID& friend_id, std::string_view set_name); - bool hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type); - bool hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type, LLColor4& color); + bool isFriendInSet(const LLUUID& friend_id, std::string_view set_name) const; + bool hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type) const; + bool hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type, LLColor4& color) const; void addSet(std::string_view set_name); bool renameSet(std::string_view set_name, std::string_view new_set_name); void removeSet(std::string_view set_name); - bool isValidSet(std::string_view set_name); + bool isValidSet(std::string_view set_name) const; void removeNonFriendFromList(const LLUUID& non_friend_id, bool save_changes = true); - bool isNonFriend(const LLUUID& non_friend_id); - bool isFriendInSet(const LLUUID& friend_id); - uuid_vec_t getListOfNonFriends(); - uuid_vec_t getListOfPseudonymAvs(); + bool isNonFriend(const LLUUID& non_friend_id) const; + bool isFriendInAnySet(const LLUUID& friend_id) const; + uuid_vec_t getListOfNonFriends() const; + uuid_vec_t getListOfPseudonymAvs() const; - bool notifyForFriend(const LLUUID& friend_id); + bool notifyForFriend(const LLUUID& friend_id) const; void setNotifyForSet(std::string_view set_name, bool notify); - bool getNotifyForSet(std::string_view set_name); + bool getNotifyForSet(std::string_view set_name) const; bool callbackAliasReset(const LLSD& notification, const LLSD& response); - bool isInternalSetName(std::string_view set_name); - bool hasSets() { return !mContactSets.empty(); } + bool isInternalSetName(std::string_view set_name) const; + bool hasSets() const { return !mContactSets.empty(); } class ContactSet { public: - bool hasFriend(const LLUUID& avatar_id) + bool hasFriend(const LLUUID& avatar_id) const { return (mFriends.find(avatar_id) != mFriends.end()); } @@ -117,7 +117,7 @@ public: bool mNotify; LLColor4 mColor; }; - ContactSet* getContactSet(std::string_view set_name); + ContactSet* getContactSet(std::string_view set_name) const; // [FS:CR] Signals for updating the various UI typedef enum e_contact_set_update { @@ -140,27 +140,27 @@ public: private: void toneDownColor(LLColor4& color) const; - uuid_vec_t getFriendsInSet(std::string_view set_name); - uuid_vec_t getFriendsInAnySet(); + uuid_vec_t getFriendsInSet(std::string_view set_name) const; + uuid_vec_t getFriendsInAnySet() const; void setPseudonym(const LLUUID& friend_id, std::string_view pseudonym); - bool hasVisuallyDifferentPseudonym(const LLUUID& friend_id); + bool hasVisuallyDifferentPseudonym(const LLUUID& friend_id) const; LLSD exportContactSet(std::string_view set_name); bool saveContactSetToDisk(std::string_view set_name, std::string_view filename); - std::string getFilename(); - std::string getDefaultFilename(); + std::string getFilename() const; + std::string getDefaultFilename() const; void importFromLLSD(const LLSD& data); LLSD exportToLLSD(); void saveToDisk(); - typedef boost::unordered_map uuid_map_t; + typedef std::unordered_map uuid_map_t; typedef std::map contact_set_map_t; contact_set_map_t mContactSets; - LLColor4 mDefaultColor; + LLColor4 mDefaultColor{ LLColor4::grey }; uuid_set_t mExtraAvatars; uuid_map_t mPseudonyms; diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 770bb43f3e..a427845ed6 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -1852,7 +1852,7 @@ void LLPanelPeople::generateContactList(const std::string& contact_set) ++buddy) { // Only show our buddies who aren't in a set, by request. - if (!LGGContactSets::getInstance()->isFriendInSet(buddy->first)) + if (!LGGContactSets::getInstance()->isFriendInAnySet(buddy->first)) avatars.push_back(buddy->first); } } @@ -1862,10 +1862,12 @@ void LLPanelPeople::generateContactList(const std::string& contact_set) } else if (!LGGContactSets::getInstance()->isInternalSetName(contact_set)) { - LGGContactSets::ContactSet* group = LGGContactSets::getInstance()->getContactSet(contact_set); - for (auto const& id : group->mFriends) + if (LGGContactSets::ContactSet* group = LGGContactSets::getInstance()->getContactSet(contact_set); group) { - avatars.push_back(id); + for (auto const& id : group->mFriends) + { + avatars.push_back(id); + } } } mContactSetList->setDirty(); From 25d4d8fafd819aef3a2364aa46fd30dfc4305ac1 Mon Sep 17 00:00:00 2001 From: Beq Date: Tue, 29 Aug 2023 20:59:43 +0100 Subject: [PATCH 33/39] windows needs requirements loaded & use specific version to allow cache --- .github/workflows/build_viewer.yml | 1 - requirements.txt | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index d85167e867..439c0136be 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -30,7 +30,6 @@ jobs: steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 - if: runner.os != 'Windows' id: py311 with: python-version: '3.11' diff --git a/requirements.txt b/requirements.txt index f1af8c21d1..7a96d70520 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -llbase>=1.2.11 -autobuild>=3.9.1 -llsd>=1.0.0 \ No newline at end of file +llbase=1.2.11 +autobuild=3.9.1 +llsd=1.2.1 \ No newline at end of file From be40d3eda7477cbc921a59ae044a58c84ad9ea06 Mon Sep 17 00:00:00 2001 From: Beq Date: Wed, 30 Aug 2023 09:26:17 +0100 Subject: [PATCH 34/39] Fix the operator in requirements --- requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 7a96d70520..308ed7a4cd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -llbase=1.2.11 -autobuild=3.9.1 -llsd=1.2.1 \ No newline at end of file +llbase==1.2.11 +autobuild==3.9.1 +llsd==1.2.1 \ No newline at end of file From b7b87c7aaa55633c877441f030b6a1680b185a34 Mon Sep 17 00:00:00 2001 From: Beq Date: Wed, 30 Aug 2023 09:51:42 +0100 Subject: [PATCH 35/39] GHA updates to align with PBR. fixes expiries and allows nightly testing via branch trigger --- .github/workflows/build_viewer.yml | 22 +++++++++++++++++----- fsutils/download_list.py | 12 +++++++----- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index 439c0136be..055ee924e8 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -3,8 +3,8 @@ on: push: branches: - "Firestorm*.*.*" - tags: - - "preview" + - "*alpha" + - "*nightly" schedule: - cron: '00 03 * * *' # Run every day at 3am UTC env: @@ -26,10 +26,13 @@ jobs: addrsize: 32 - os: macos-11 addrsize: 32 + - grid: sl + addrsize: 32 runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 + if: runner.os != 'Windows' id: py311 with: python-version: '3.11' @@ -78,7 +81,9 @@ jobs: FS_RELEASE_TYPE=Release elif [[ "${{ github.ref_name }}" == *review* ]]; then FS_RELEASE_TYPE=Beta - elif [[ "${{ github.event_name }}" == 'schedule' ]]; then + elif [[ "${{ github.ref_name }}" == *alpha* ]]; then + FS_RELEASE_TYPE=Alpha + elif [[ "${{ github.ref_name }}" == *nightly* ]] || [[ "${{ github.event_name }}" == 'schedule' ]]; then FS_RELEASE_TYPE=Nightly else FS_RELEASE_TYPE=Unknown @@ -121,7 +126,7 @@ jobs: run: 'rclone copy fs_bundles: --filter "- Alpha/*" --filter "+ *${{ env.fallback_platform }}*bz2" .' - name: rclone any extra private 3p packages for Alpha (allows library updates not in the main repo) - if: env.FS_BUILD_TYPE == 'Alpha' + if: env.FS_RELEASE_TYPE == 'Alpha' run: 'rclone copy fs_bundles:Alpha --include "*${{ env.fallback_platform }}*bz2" .' - name: set VSVER for Windows builds @@ -203,9 +208,13 @@ jobs: shell: bash - name: make Nightly builds expire after 14 days - if: env.FS_BUILD_TYPE == 'Nightly' + if: env.FS_RELEASE_TYPE == 'Nightly' run: | echo "EXTRA_ARGS=${{ env.EXTRA_ARGS}} --testbuild=14" >> $GITHUB_ENV + - name: make Alpha builds expire after 28 days + if: env.FS_RELEASE_TYPE == 'Alpha' + run: | + echo "EXTRA_ARGS=${{ env.EXTRA_ARGS}} --testbuild=28" >> $GITHUB_ENV - name: Clean up packages to give more space run: rm *${{ env.fallback_platform }}*bz2 @@ -265,6 +274,9 @@ jobs: elif [[ "${{ github.ref_name }}" == *review* ]]; then FS_RELEASE_FOLDER=preview FS_BUILD_WEBHOOK_URL=${{ secrets.BETA_WEBHOOK_URL }} + elif [[ "${{ github.ref_name }}" == *alpha* ]]; then + FS_RELEASE_FOLDER=preview + FS_BUILD_WEBHOOK_URL=${{ secrets.BETA_WEBHOOK_URL }} elif [[ "${{ github.event_name }}" == 'schedule' ]]; then FS_RELEASE_FOLDER=nightly FS_BUILD_WEBHOOK_URL=${{ secrets.NIGHTLY_WEBHOOK_URL }} diff --git a/fsutils/download_list.py b/fsutils/download_list.py index 2dc8cfd08d..8f453559a3 100644 --- a/fsutils/download_list.py +++ b/fsutils/download_list.py @@ -129,9 +129,11 @@ dirs = ["windows", "mac", "linux"] # build_types is a map from Beta, Release and Nightly to folder names preview release and nightly build_types = { + "Alpha": "test", "Beta": "preview", "Release": "release", - "Nightly": "nightly" + "Nightly": "nightly", + "Unknown": "test" } target_folder = { @@ -155,10 +157,10 @@ for file in zips: # print(f"build_type is {build_type}") if build_type not in build_types: - print(f"Invalid build_type {build_type} using file {file}") - continue - else: - build_folder = build_types[build_type] + print(f"Invalid build_type {build_type} from file {file} using 'Unknown'") + build_type = "Unknown" + + build_folder = build_types[build_type] build_types_created.add(build_type) From cbf5f5a4d3eaa495429d7c8edb787c9df81968af Mon Sep 17 00:00:00 2001 From: Beq Date: Wed, 30 Aug 2023 22:43:24 +0100 Subject: [PATCH 36/39] Make area search work again again --- indra/newview/fsareasearch.cpp | 14 ++++++++++++-- indra/newview/llagent.cpp | 8 +++++++- indra/newview/llagent.h | 10 ++++++++++ indra/newview/llfloater360capture.cpp | 7 ++++--- indra/newview/llviewermenu.cpp | 7 +++++++ indra/newview/llviewerregion.cpp | 1 + 6 files changed, 41 insertions(+), 6 deletions(-) diff --git a/indra/newview/fsareasearch.cpp b/indra/newview/fsareasearch.cpp index b81a20454f..b3ecf75951 100644 --- a/indra/newview/fsareasearch.cpp +++ b/indra/newview/fsareasearch.cpp @@ -173,7 +173,8 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) : mRequestNeedsSent(false), mRlvBehaviorCallbackConnection() { - LLViewerRegion::sFSAreaSearchActive = true; + gAgent.setFSAreaSearchActive(true); + gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360); mFactoryMap["area_search_list_panel"] = LLCallbackMap(createPanelList, this); mFactoryMap["area_search_find_panel"] = LLCallbackMap(createPanelFind, this); mFactoryMap["area_search_filter_panel"] = LLCallbackMap(createPanelFilter, this); @@ -189,7 +190,16 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) : FSAreaSearch::~FSAreaSearch() { - LLViewerRegion::sFSAreaSearchActive = false; + gAgent.setFSAreaSearchActive(false); + + // Tell the Simulator not to send us everything anymore + // and revert to the regular "keyhole" frustum of interest + // list updates. + if( !LLApp::isExiting() ) + { + gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_DEFAULT); + } + if (!gIdleCallbacks.deleteFunction(idle, this)) { LL_WARNS("FSAreaSearch") << "FSAreaSearch::~FSAreaSearch() failed to delete callback" << LL_ENDL; diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 754b991642..cf4dc5c8cd 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -3506,8 +3506,13 @@ void LLAgent::changeInterestListMode(const std::string &new_mode) { if (new_mode != mInterestListMode) { + // Fix area search again + if ( (new_mode == LLViewerRegion::IL_MODE_DEFAULT && (!mFSAreaSearchActive && !m360CaptureActive)) || + (new_mode == LLViewerRegion::IL_MODE_360) ) + { + LL_DEBUGS("360Capture") << "Setting Agent interest list mode to " << mInterestListMode << " and updating regions" << LL_ENDL; + // mInterestListMode = new_mode; - // Change interest list mode for all regions. If they are already set for the current mode, // the setting will have no effect. for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); @@ -3520,6 +3525,7 @@ void LLAgent::changeInterestListMode(const std::string &new_mode) regionp->setInterestListMode(mInterestListMode); } } + } // } else { diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index d21eedb66a..a0e1540609 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -307,6 +307,10 @@ private: region_changed_signal_t mRegionChangedSignal; std::string mInterestListMode; // How agent wants regions to send updates + // Area search fixes + bool mFSAreaSearchActive; + bool m360CaptureActive; + // //-------------------------------------------------------------------- // History @@ -315,6 +319,12 @@ public: S32 getRegionsVisited() const; F64 getDistanceTraveled() const; void setDistanceTraveled(F64 dist) { mDistanceTraveled = dist; } + // Area search fixes + void setFSAreaSearchActive(BOOL enabled) { mFSAreaSearchActive = enabled; } + void set360CaptureActive(BOOL enabled) { m360CaptureActive = enabled; } + bool getFSAreaSearchActive() { return mFSAreaSearchActive; } + bool get360CaptureActive() { return m360CaptureActive; } + // const LLVector3d &getLastPositionGlobal() const { return mLastPositionGlobal; } void setLastPositionGlobal(const LLVector3d &pos) { mLastPositionGlobal = pos; } diff --git a/indra/newview/llfloater360capture.cpp b/indra/newview/llfloater360capture.cpp index e79535f498..30551da3ea 100644 --- a/indra/newview/llfloater360capture.cpp +++ b/indra/newview/llfloater360capture.cpp @@ -65,7 +65,7 @@ LLFloater360Capture::LLFloater360Capture(const LLSD& key) // otherwise, exit before this is turned off, the Simulator // will take care of cleaning up for us. mStartILMode = gAgent.getInterestListMode(); - + gAgent.set360CaptureActive(true); // make FS area search work aga // send everything to us for as long as this floater is open gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360); } @@ -84,11 +84,12 @@ LLFloater360Capture::~LLFloater360Capture() // and now reverts to the regular "keyhole" frustum of interest // list updates. if (!LLApp::isExiting() && - gSavedSettings.getBOOL("360CaptureUseInterestListCap") && + // gSavedSettings.getBOOL("360CaptureUseInterestListCap") && // Invalid dependency - This is not used anywhere else now. mStartILMode != gAgent.getInterestListMode()) { + gAgent.set360CaptureActive(false); // make FS Area search work again gAgent.changeInterestListMode(mStartILMode); - } + } } BOOL LLFloater360Capture::postBuild() diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 2e7f30f985..274192aecc 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1491,10 +1491,17 @@ public: // Toggle the mode - regions will get updated if (gAgent.getInterestListMode() == LLViewerRegion::IL_MODE_360) { + // we need to force the 360 mode "users" to false or this override will fail + gAgent.setFSAreaSearchActive(false); + gAgent.set360CaptureActive(false); + // gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_DEFAULT); } else { + // we need to force the 360 mode user flag to true or this override will fail. Don;t set area search though as that can have other effects. + gAgent.set360CaptureActive(false); + // gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360); } return true; diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 1cfc8629da..14773e147f 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1736,6 +1736,7 @@ BOOL LLViewerRegion::isViewerCameraStatic() void LLViewerRegion::killInvisibleObjects(F32 max_time) { + if(gAgent.getFSAreaSearchActive()){ return; } // FIRE-32668 Area Search improvements (again) if(!sVOCacheCullingEnabled) { return; From 458476b14834ce93fc7167186cdfa65d397482ff Mon Sep 17 00:00:00 2001 From: Beq Date: Wed, 30 Aug 2023 23:05:41 +0100 Subject: [PATCH 37/39] Allow nightly trigger and fix up Windows python anomalies Allow nightly to be triggered by push to a branch called *nightly* Windows has to expressly insert itself in the path to pickup the right version. --- .github/workflows/build_viewer.yml | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index 055ee924e8..72e7a7464c 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -26,21 +26,32 @@ jobs: addrsize: 32 - os: macos-11 addrsize: 32 - - grid: sl - addrsize: 32 + # - grid: sl + # addrsize: 32 runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 - if: runner.os != 'Windows' id: py311 with: python-version: '3.11' cache: 'pip' - - run: pip3 install -r requirements.txt + - run: | + python3 -m pip install -r requirements.txt --user + echo "$HOME/.local/bin" >> $GITHUB_PATH - name: Check python version run: python -V + - name: Check python3 version + run: python3 -V + + - name: Test python llsd + run: | + python - < Date: Thu, 31 Aug 2023 10:36:32 +0100 Subject: [PATCH 38/39] Make the workaround Windows specific to stop upsetting Mac --- .github/workflows/build_viewer.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index 72e7a7464c..fdb4b786a8 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -36,10 +36,16 @@ jobs: with: python-version: '3.11' cache: 'pip' - - run: | + + - if: runner.os == 'Windows' + run: | python3 -m pip install -r requirements.txt --user echo "$HOME/.local/bin" >> $GITHUB_PATH + - if: runner.os != 'Windows' + run: | + python3 -m pip install -r requirements.txt + - name: Check python version run: python -V - name: Check python3 version From 6dacfb6fe94fe313a675c6f718dc7eb2eb7c0c21 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Thu, 31 Aug 2023 17:45:48 +0200 Subject: [PATCH 39/39] What are these fake booleans again? --- indra/newview/llagent.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index a0e1540609..7da8b15aa8 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -320,10 +320,10 @@ public: F64 getDistanceTraveled() const; void setDistanceTraveled(F64 dist) { mDistanceTraveled = dist; } // Area search fixes - void setFSAreaSearchActive(BOOL enabled) { mFSAreaSearchActive = enabled; } - void set360CaptureActive(BOOL enabled) { m360CaptureActive = enabled; } - bool getFSAreaSearchActive() { return mFSAreaSearchActive; } - bool get360CaptureActive() { return m360CaptureActive; } + void setFSAreaSearchActive(bool enabled) { mFSAreaSearchActive = enabled; } + void set360CaptureActive(bool enabled) { m360CaptureActive = enabled; } + bool getFSAreaSearchActive() const { return mFSAreaSearchActive; } + bool get360CaptureActive() const { return m360CaptureActive; } // const LLVector3d &getLastPositionGlobal() const { return mLastPositionGlobal; }