Ansariel 2023-08-30 14:38:51 +02:00
commit 37d04235fe
32 changed files with 501 additions and 887 deletions

1
.gitattributes vendored
View File

@ -30,7 +30,6 @@ indra/tools/vstool/* -text
# Files with Windows line endings
VivoxAUP.txt text eol=crlf
FILES_ARE_UNICODE_UTF-16LE.txt text eol=crlf
*.nsi text eol=crlf
# Windows Manifest files
*.manifest text eol=crlf

View File

@ -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'

View File

@ -1140,11 +1140,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>9d9f72f50cffe7443e4b58f009ffc1f4</string>
<string>8ee7c21f3f109cf4e1709e4af0b4bebf</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///opt/firestorm/fmodstudio-2.02.15-darwin64-9.tar.bz2</string>
<string>file:///opt/firestorm/fmodstudio-2.02.17-darwin64-232401806.tar.bz2</string>
</map>
<key>name</key>
<string>darwin64</string>
@ -1154,11 +1154,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>79fb2f09d2c81ed6464e11af36566910</string>
<string>8c82bd0fd9b544d02c8da1f9d921e964</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///opt/firestorm/fmodstudio-2.02.15-linux64-231741426.tar.bz2</string>
<string>file:///opt/firestorm/fmodstudio-2.02.17-linux64-232401431.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>
@ -1168,11 +1168,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>c1bce2b362c31345200297a4010626e9</string>
<string>fb5a3f97091028859ffa8c2768536b52</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.15-windows-231741106.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.17-windows-232401332.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@ -1182,18 +1182,18 @@
<key>archive</key>
<map>
<key>hash</key>
<string>cd0e8f58fece3eac0b5ebe21f354bf8c</string>
<string>f8e4fdd3eafbd54c01f5f78d04b95bf8</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.15-windows64-231741113.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.17-windows64-232401329.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
</map>
</map>
<key>version</key>
<string>2.02.15</string>
<string>2.02.17</string>
</map>
<key>fontconfig</key>
<map>
@ -1818,9 +1818,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>e99b86fc3ed48a778580dd1449f8f33b</string>
<string>3142fccbcc0e2c5a019e3177ef364290</string>
<key>url</key>
<string>file:///opt/firestorm/kdu-8.2-darwin-212431232.tar.bz2</string>
<string>file:///opt/firestorm/kdu-8.3-darwin64-232392239.tar.bz2</string>
</map>
<key>name</key>
<string>darwin64</string>
@ -1830,9 +1830,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>c4dd59fbb0709fc4c7b5ab69b20246f8</string>
<string>e13d6fe708613bb3a5d630c4cdd97a3b</string>
<key>url</key>
<string>file:///opt/firestorm/kdu-8.2-linux64_bionic-220911445.tar.bz2</string>
<string>file:///opt/firestorm/kdu-8.3-linux64-232392238.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>
@ -1842,9 +1842,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>e88372fa10b83c6900443dcc12c12338</string>
<string>4aa7df19125708580055b42190d2511e</string>
<key>url</key>
<string>file:///c:/cygwin/opt/firestorm/kdu-8.2-windows-212351246.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/kdu-8.3-windows-232392239.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@ -1854,16 +1854,16 @@
<key>archive</key>
<map>
<key>hash</key>
<string>e88372fa10b83c6900443dcc12c12338</string>
<string>4aa7df19125708580055b42190d2511e</string>
<key>url</key>
<string>file:///c:/cygwin/opt/firestorm/kdu-8.2-windows-212351246.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/kdu-8.3-windows-232392239.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
</map>
</map>
<key>version</key>
<string>8.0.6</string>
<string>8.3</string>
</map>
<key>libhunspell</key>
<map>

View File

@ -50,7 +50,7 @@ elseif (WINDOWS)
${pymaybe}
)
endif()
include(FindPythonInterp)
find_package(Python3 COMPONENTS Interpreter)
else()
find_program(python python3)

View File

@ -42,6 +42,7 @@ class LLAudioEngine_OpenAL : public LLAudioEngine
virtual bool init(void *user_data, const std::string &app_title);
virtual std::string getDriverName(bool verbose);
virtual LLStreamingAudioInterface* createDefaultStreamingAudioImpl() const { return nullptr; }
virtual void allocateListener();
virtual void shutdown();
@ -56,7 +57,6 @@ class LLAudioEngine_OpenAL : public LLAudioEngine
/*virtual*/ void updateWind(LLVector3 direction, F32 camera_altitude);
private:
void * windDSP(void *newbuffer, int length);
typedef S16 WIND_SAMPLE_T;
LLWindGen<WIND_SAMPLE_T> *mWindGen;
S16 *mWindBuf;

View File

@ -90,6 +90,8 @@ endif (BUILD_HEADLESS)
add_library (llrender ${llrender_SOURCE_FILES})
target_include_directories( llrender INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
set_property(TARGET llrender PROPERTY POSITION_INDEPENDENT_CODE ON)
# Libraries on which this library depends, needed for Linux builds
# Sort by high-level to low-level
target_link_libraries(llrender

View File

@ -654,6 +654,6 @@
execute_parameters="performance"
is_running_function="Floater.IsOpen"
is_running_parameters="performance"
checkbox_control="FSAutoTuneFPS"
checkbox_control="AutoTuneFPS"
/>
</commands>

View File

@ -42,12 +42,10 @@
#include "llpanelpeoplemenus.h"
#include "llslurl.h"
const U32 MAX_SELECTIONS = 20;
constexpr U32 MAX_SELECTIONS = 20;
static LLPanelInjector<FSPanelContactSets> 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<LLTextBox>("member_count")->setTextArg("[COUNT]", llformat("%d", avatars.size()));
@ -198,7 +198,7 @@ void FSPanelContactSets::refreshContactSets()
std::vector<std::string> 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);
}

View File

@ -70,8 +70,8 @@ private:
uuid_vec_t mAvatarSelections;
LLComboBox* mContactSetCombo;
LLAvatarList* mAvatarList;
LLComboBox* mContactSetCombo{ nullptr };
LLAvatarList* mAvatarList{ nullptr };
};
#endif // FS_PANELCONTACTSETS_H

View File

@ -98,8 +98,6 @@ FSRadar::FSRadar() :
mNameFormatCallbackConnection(),
mAgeAlertCallbackConnection()
{
mRadarListUpdater = std::make_unique<FSRadarListUpdater>(std::bind(&FSRadar::updateRadarList, this));
// Use the callback from LLAvatarNameCache here or we might update the names too early!
LLAvatarNameCache::getInstance()->addUseDisplayNamesCallback(boost::bind(&FSRadar::updateNames, this));
mShowUsernamesCallbackConnection = gSavedSettings.getControl("NameTagShowUsernames")->getSignal()->connect(boost::bind(&FSRadar::updateNames, this));
@ -126,6 +124,11 @@ FSRadar::~FSRadar()
}
}
void FSRadar::initSingleton()
{
mRadarListUpdater = std::make_unique<FSRadarListUpdater>(std::bind(&FSRadar::updateRadarList, this));
}
void FSRadar::radarAlertMsg(const LLUUID& agent_id, const LLAvatarName& av_name, std::string_view postMsg)
{
// <FS:CR> Milkshake-style radar alerts

View File

@ -109,6 +109,9 @@ public:
return mUpdateSignal.connect(cb);
}
protected:
void initSingleton() override;
private:
void updateRadarList();
void updateTracking();

View File

@ -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<bool> legacy_radar_friend(gSavedSettings, "FSLegacyRadarFriendColoring");
static LLCachedControl<bool> 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());

View File

@ -22,9 +22,9 @@
#include "v4color.h"
#include "llsingleton.h"
#include <unordered_map>
#include <unordered_set>
#include <boost/signals2.hpp>
#include <boost/unordered_map.hpp>
#include <boost/unordered_set.hpp>
typedef enum e_lgg_cs
{
@ -51,63 +51,63 @@ class LGGContactSets : public LLSingleton<LGGContactSets>
public:
typedef std::vector<std::string> string_vec_t;
typedef boost::unordered_set<LLUUID, FSUUIDHash> uuid_set_t;
typedef std::unordered_set<LLUUID, FSUUIDHash> 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<LLUUID, std::string, FSUUIDHash> uuid_map_t;
typedef std::unordered_map<LLUUID, std::string, FSUUIDHash> uuid_map_t;
typedef std::map<std::string, ContactSet*> contact_set_map_t;
contact_set_map_t mContactSets;
LLColor4 mDefaultColor;
LLColor4 mDefaultColor{ LLColor4::grey };
uuid_set_t mExtraAvatars;
uuid_map_t mPseudonyms;

View File

@ -1141,7 +1141,18 @@ void LLEnvironment::onRegionChange()
}
if (!cur_region->capabilitiesReceived())
{
// <FS:PR-Aleric> GCC13 warning: maybe-uninitialized - probably bogus
#if defined(__GNUC__) && (__GNUC__ >= 13)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#endif
// </FS:PR-Aleric>
cur_region->setCapabilitiesReceivedCallback([](const LLUUID &region_id, LLViewerRegion* regionp) { LLEnvironment::instance().requestRegion(); });
// <FS:PR-Aleric> GCC13 warning: maybe-uninitialized - probably bogus
#if defined(__GNUC__) && (__GNUC__ >= 13)
#pragma GCC diagnostic pop
#endif
// </FS:PR-Aleric>
return;
}
requestRegion();

View File

@ -2130,8 +2130,18 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
LLVector4a t;
tangent_to_object.rotate(binormal_dir, t);
LLVector4a binormal;
// <FS:PR-Aleric> GCC13 warning: maybe-uninitialized - probably bogus
#if defined(__GNUC__) && (__GNUC__ >= 13)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#endif
// </FS:PR-Aleric>
mat_normal.rotate(t, binormal);
// <FS:PR-Aleric>
#if defined(__GNUC__) && (__GNUC__ >= 13)
#pragma GCC diagnostic pop
#endif
// </FS:PR-Aleric>
//VECTORIZE THIS
if (mDrawablep->isActive())
{

View File

@ -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)+" ";
// <FS:Ansariel> 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) + ")";
// </FS:Ansariel>
}
LLSD cbparams;
cbparams["index"] = curiter->first;

View File

@ -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); // <FS:Beq/> 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); // <FS:PR-Aleric/> use the correct variable (which_lod).
return;
}

View File

@ -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();

View File

@ -370,12 +370,16 @@ bool LLPresetsManager::savePreset(const std::string& subdirectory, std::string n
// <FS:Ansariel> Graphic preset controls independent from XUI
// Add the controls not in feature table to the default preset with their current value
for (std::vector<std::string>::iterator it = mGraphicPresetControls.begin(); it != mGraphicPresetControls.end(); ++it)
for (const auto& ctrl_name : mGraphicPresetControls)
{
std::string ctrl_name = *it;
if (!paramsData.has(ctrl_name))
{
LLControlVariable* ctrl = gSavedSettings.getControl(ctrl_name).get();
if (!ctrl)
{
LL_WARNS() << "Presets setting list contains non-existing setting: " << ctrl_name << LL_ENDL;
continue;
}
std::string comment = ctrl->getComment();
std::string type = LLControlGroup::typeEnumToString(ctrl->type());
LLSD value = ctrl->getValue();

View File

@ -431,7 +431,7 @@ public:
std::string region_name = LLURI::unescape(tokens[0]);
std::string callback_url = LLSLURL(url_grid, region_name, coords).getSLURLString();
std::string callback_url = LLSLURL(grid, region_name, coords).getSLURLString();
#endif // OPENSIM
// </FS:AW optional opensim support>

View File

@ -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 + " ";
// <FS:Ansariel> 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) + ")";
// </FS:Ansariel>
}
LLSD cbparams;

View File

@ -224,7 +224,8 @@
// </FS:Ansariel> [FS communication UI]
#include "llwindowlistener.h"
#include "llviewerwindowlistener.h"
#include "llpaneltopinfobar.h"
// <FS:Zi> We don't use the mini location panel in Firestorm
// #include "llpaneltopinfobar.h"
#include "llcleanup.h"
#include "llimview.h"
#include "llviewermenufile.h"

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="perm prefs" title="Standart icazələr">
<panel label="İcazələr" name="permissions">
<check_box label="Qrup ilə paylaş" name="share_with_group"/>
<check_box label="Hər kəsə köçürtməyə icazə ver" name="everyone_copy"/>
<text name="NextOwnerLabel">
Yeni sahibin icazəsi var:
</text>
<check_box label="dəyişdirmək" name="next_owner_modify"/>
<check_box label="köçürtmək" name="next_owner_copy"/>
<check_box initial_value="true" label="satmaq/paylaşmaq" name="next_owner_transfer"/>
</panel>
<button label="OK" label_selected="OK" name="ok"/>
<button label="Ləğv et" label_selected="Ləğv et" name="cancel"/>
</floater>

View File

@ -1,561 +1,98 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
height="652"
layout="topleft"
name="performance"
help_topic="fs_performance_floater"
save_rect="true"
title="Improve Graphics Speed (Experimental)"
can_resize="false"
min_width="580"
width="580">
<floater.string name="frame_stats">
Frame: [TOT_FRAME_TIME]ms - Scenery:[SCENERY_FRAME_PCT]% Avatars:[AV_FRAME_PCT]% UI:[UI_FRAME_PCT]% HUDs:[HUDS_FRAME_PCT]% Swap:[SWAP_FRAME_PCT]% Tasks:[IDLE_FRAME_PCT]%
</floater.string>
<floater.string name="limit_fps">
User Limited @ [FPSCAP] FPS
</floater.string>
<floater.string name="tuning_fps">
Target [FPSTARGET] FPS
</floater.string>
<floater.string name="av_frame_pct">
[AV_FRAME_PCT]%
</floater.string>
<floater.string name="huds_frame_pct">
[HUDS_FRAME_PCT]%
</floater.string>
<floater.string name="focus_fps">
In Background
</floater.string>
<floater.string name="info_waitforit">
Allow 5-10 seconds for changes to take effect.
</floater.string>
<floater.string name="info_frozen">
Stats pause when FPS is limited or in background.
</floater.string>
<floater.string name="tot_av_template">
Total: [TOT_AV] ([TOT_AV_TIME]μs)
</floater.string>
<floater.string name="tot_att_template">
Total: [TOT_ATT] ([TOT_ATT_TIME]μs)
</floater.string>
height="642"
layout="topleft"
name="performance"
save_rect="true"
reuse_instance="true"
title="IMPROVE GRAPHICS SPEED"
width="580">
<string
name="fps_text"
value="frames per second"/>
<string
name="max_text"
value=" (maximum)"/>
<panel
bevel_style="none"
follows="left|top|right"
height="600"
width="580"
name="panel_top"
visible="true"
layout="topleft"
left="0"
top="0">
bevel_style="none"
follows="left|top"
height="540"
width="580"
name="panel_top"
visible="true"
layout="topleft"
left="0"
top="0">
<panel
bg_alpha_color="black"
background_visible="true"
background_opaque="false"
border="false"
bevel_style="none"
follows="left|top|right"
height="55"
width="560"
name="fps_subpanel"
layout="topleft"
left="10"
top="5">
bg_alpha_color="black"
background_visible="true"
background_opaque="false"
border="false"
bevel_style="none"
follows="left|top"
height="40"
width="560"
name="fps_subpanel"
layout="topleft"
left="10"
top="5">
<text
follows="left|top"
font="SansSerifHuge"
text_color="White"
height="20"
layout="topleft"
left="10"
top="8"
name="fps_value"
width="42">
follows="left|top"
font="SansSerifHuge"
text_color="White"
height="20"
layout="topleft"
left="10"
top="8"
name="fps_value"
width="42">
167
</text>
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left_pad="3"
top="13"
name="fps_lbl"
width="150">
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left_pad="3"
top="13"
name="fps_lbl"
width="450">
frames per second
</text>
<text
follows="left|top"
font="SansSerifLarge"
text_color="DrYellow"
height="28"
layout="topleft"
left_pad="10"
name="fps_warning"
top="13"
width="200"> User Limited @ 000 FPS
follows="left|top"
text_color="White"
height="20"
layout="topleft"
left="395"
top="7"
name="fps_desc1_lbl"
width="150">
Allow 5-10 seconds for
</text>
<text
follows="top|right"
text_color="White"
height="40"
layout="topleft"
left="420"
top="5"
name="fps_desc1_lbl"
width="140"
wrap="true">
Stats pause when FPS is limited or in background.
follows="left|top"
text_color="White"
height="20"
layout="topleft"
top_pad="-3"
name="fps_desc2_lbl"
width="150">
changes to take full effect.
</text>
<text
follows="left|top|right"
font="MonospaceMedium"
text_color="White"
height="20"
layout="topleft"
halign="center"
left="5"
top="38"
name="frame_breakdown"
width="550">
[--------------------Frame breakdown will appear here.---------------------]
</text>
</panel>
<panel
bg_alpha_color="black"
background_visible="true"
background_opaque="false"
border="false"
bevel_style="none"
follows="left|top|right"
height="55"
width="560"
name="target_subpanel"
layout="topleft"
left="10"
top_pad="0">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="settings_lbl"
top="7"
tool_tip="Automatically adjust settings to maintain FPS. Set the Target to the desired frame rate and the viewer will attempt to match this by dynamically altering your settings."
width="75">
Auto Tune:
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left_pad="10"
name="targetfps_desc"
wrap="true"
width="140"
halign="right"
top_delta="3">
Target Frame Rate (fps)
</text>
<spinner
name="target_fps"
control_name="FSTargetFPS"
font="SansSerifLarge"
tool_tip="Target FPS - The desired FPS level. The viewer will attempt to achieve this by adjusting your graphics settings."
layout="topleft"
follows="right|top"
left_pad="10"
top_delta="0"
height="25"
visible="true"
decimal_digits="0"
increment="1"
initial_value="25"
max_val="300"
min_val="1"
width="48"
label_width="0" />
<button
control_name="FSAutoTuneFPS"
follows="top|right"
height="20"
initial_value="false"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
is_toggle="true"
label="Start"
label_selected="Stop"
layout="topleft"
left_pad="5"
name="AutoTuneFPS"
top_delta="0"
tool_tip="The viewer will attempt to adjust settings to meet the target FPS."
width="72">
</button>
<check_box
control_name="FSAutoTuneLock"
follows="top|right"
height="20"
initial_value="true"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
is_toggle="true"
label="Continuous"
layout="topleft"
left_pad="5"
name="AutoTuneContinuous"
top_delta="0"
tool_tip="The viewer will continually adapt the settings to meet the target FPS until stopped even with the floater closed. When disabled clicking the Auto Tune button will adjust for the current settings then stop."
width="64">
</check_box>
<button
follows="left|top"
height="24"
image_overlay="Script_Disk_Save"
layout="topleft"
right="-62"
name="PrefSaveButton"
top_delta="0"
tool_tip="Save the current settings to a default for future use."
width="24">
<button.commit_callback
function="Performance.PrefSave"
parameter="graphic" />
</button>
<button
follows="left|top"
height="24"
image_overlay="Script_Disk_Load"
layout="topleft"
right="-34"
name="PrefLoadButton"
top_delta="0"
tool_tip="Load an existing preset."
width="24">
<button.commit_callback
function="Performance.PrefLoad"
parameter="graphic" />
</button>
<!--Reset Button-->
<button
follows="left|top"
height="24"
image_overlay="Refresh_Off"
tool_tip="Reload default graphics settings for your hardware."
layout="topleft"
right="-6"
name="Defaults"
top_delta="0"
width="24">
<button.commit_callback
function="Performance.HardwareDefaults" />
</button>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="20"
name="settings_desc"
top_pad="0"
wrap="true"
width="215"
halign="right"
top_delta="5">
Tuning Strategy
</text>
<combo_box
follows="top|right"
font="SansSerif"
height="20"
layout="topleft"
left_pad="10"
control_name="FSTuningFPSStrategy"
name="FSTuningFPSStrategy"
top_delta="0"
width="125">
<combo_box.item
label="Avatars Only"
name="av_only"
value="0" />
<combo_box.item
label="Avatars and Scene"
name="av_and_scene"
value="1" />
</combo_box>
<button
height="16"
width="16"
scale_image="true"
layout="topleft"
mouse_opaque="true"
follows="right|top"
name="target_btn"
top_delta="2"
tool_tip="Change the Tuning Strategy behavior."
image_selected="Icon_Gear"
image_pressed="Icon_Gear"
image_unselected="Icon_Gear"
left_pad="8"
is_toggle="true"></button>
</panel>
</panel>
<panel
bevel_style="none"
follows="left|top|right"
height="540"
width="580"
name="panel_performance_main"
visible="true"
layout="topleft"
left="0"
top="115">
<panel
bg_alpha_color="PanelGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top|right"
height="50"
width="560"
name="settings_subpanel"
layout="topleft"
left="10"
top_pad="10">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="settings_lbl"
top="7"
width="180">
Graphics settings
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="settings_desc"
top_pad="0"
width="395">
Choose settings for distance, water, lighting and more.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow3"
follows="right|top"
top="19"
right="-20" />
</panel>
<panel
bg_alpha_color="PanelGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top|right"
height="50"
width="560"
name="nearby_subpanel"
layout="topleft"
top_pad="10">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="avatars_nearby_lbl"
top="7"
width="205">
Avatars nearby
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="avatars_nearby_desc"
top_pad="0"
width="345">
Manage which nearby avatars are fully displayed.
</text>
<text
follows="top|right"
font="SansSerifSmall"
text_color="White"
height="28"
layout="topleft"
left_pad="10"
name="avatars_frme_pct_lbl"
top="8"
width="75">
Time spent
drawing
avatars
</text>
<text
follows="top|right"
font="SansSerifHuge"
text_color="White"
height="20"
layout="topleft"
left_pad="10"
top="14"
name="av_frame_stats"
width="62">
00%
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow2"
follows="right|top"
top="19"
right="-20" />
</panel>
<panel
bg_alpha_color="PanelGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top|right"
height="50"
width="560"
name="complexity_subpanel"
layout="topleft"
top_pad="10">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="complexity_lbl"
top="7"
width="180">
Your avatar complexity
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="complexity_info"
top_pad="0"
width="455">
Be a good citizen. Manage the impact of your avatar
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top="19"
right="-20" />
</panel>
<panel
bg_alpha_color="PanelGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top|right"
height="50"
width="560"
name="huds_subpanel"
layout="topleft"
top_pad="10">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="huds_lbl"
top="7"
width="135">
Your active HUDs
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="huds_desc"
top_pad="0"
width="345">
Removing unnecessary HUDs may improve speed.
</text>
<text
follows="top|right"
font="SansSerifSmall"
text_color="White"
height="28"
layout="topleft"
left_pad="10"
name="huds_frme_pct_lbl"
top="8"
width="75">
Time spent
drawing
HUDs
</text>
<text
follows="top|right"
font="SansSerifHuge"
text_color="White"
height="20"
layout="topleft"
left_pad="10"
top="14"
name="huds_frame_stats"
width="62">
00%
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top="19"
right="-20" />
</panel>
bevel_style="none"
follows="left|top"
height="540"
width="580"
name="panel_performance_main"
visible="true"
layout="topleft"
left="0"
top="60">
<panel
bg_alpha_color="PanelGray"
background_visible="true"
@ -567,6 +104,99 @@ HUDs
width="560"
name="autoadjustments_subpanel"
layout="topleft"
left="10"
top="5">
<text
follows="left|top"
font="SansSerifBoldLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="auto_adj_lbl"
top="7"
width="375">
Auto-adjust settings (recommended)
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="auto_adj_desc"
top_pad="0"
width="485">
Allow automatic adjustments to reach your preferred frame rate.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top="19"
right="-20"/>
</panel>
<panel
bg_alpha_color="PanelGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="50"
width="560"
name="settings_subpanel"
layout="topleft"
top_pad="10">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="settings_lbl"
top="7"
width="180">
Graphics settings
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="settings_desc"
top_pad="0"
width="395">
Choose settings for distance, water, lighting and more.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow3"
follows="right|top"
top="19"
right="-20"/>
</panel>
<panel
bg_alpha_color="PanelGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="50"
width="560"
name="nearby_subpanel"
layout="topleft"
top_pad="10">
<text
follows="left|top"
@ -575,10 +205,10 @@ HUDs
height="20"
layout="topleft"
left="10"
name="auto_adj_lbl"
name="avatars_nearby_lbl"
top="7"
width="175">
Preferred frame rate
width="205">
Avatars nearby
</text>
<text
follows="left|top"
@ -587,10 +217,102 @@ HUDs
height="20"
layout="topleft"
left="10"
name="auto_adj_desc"
name="avatars_nearby_desc"
top_pad="0"
width="485">
Allow automatic adjustments to reach your preferred frame rate (advanced).
width="395">
Manage which nearby avatars are fully displayed.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow2"
follows="right|top"
top="19"
right="-20"/>
</panel>
<panel
bg_alpha_color="PanelGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="50"
width="560"
name="complexity_subpanel"
layout="topleft"
top_pad="10">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="complexity_lbl"
top="7"
width="180">
Your avatar complexity
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="complexity_info"
top_pad="0"
width="455">
Reduce the complexity of your avatar if you aren't satisfied with current FPS.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top="19"
right="-20"/>
</panel>
<panel
bg_alpha_color="PanelGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="50"
width="560"
name="huds_subpanel"
layout="topleft"
top_pad="10">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="huds_lbl"
top="7"
width="135">
Your active HUDs
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="huds_desc"
top_pad="0"
width="395">
Removing HUDs you are not using can improve speed.
</text>
<icon
height="16"
@ -604,29 +326,29 @@ HUDs
</panel>
</panel>
<panel
filename="panel_performance_nearby.xml"
follows="all"
layout="topleft"
left="0"
name="panel_performance_nearby"
visible="false"
top="115" />
filename="panel_performance_nearby.xml"
follows="all"
layout="topleft"
left="0"
name="panel_performance_nearby"
visible="false"
top="55" />
<panel
filename="panel_performance_complexity.xml"
follows="all"
layout="topleft"
left="0"
name="panel_performance_complexity"
visible="false"
top="115" />
filename="panel_performance_complexity.xml"
follows="all"
layout="topleft"
left="0"
name="panel_performance_complexity"
visible="false"
top="55" />
<panel
filename="panel_performance_preferences.xml"
follows="all"
layout="topleft"
left="0"
name="panel_performance_preferences"
visible="false"
top="115" />
filename="panel_performance_preferences.xml"
follows="all"
layout="topleft"
left="0"
name="panel_performance_preferences"
visible="false"
top="55" />
<panel
filename="panel_performance_huds.xml"
follows="all"

View File

@ -1,108 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
height="180"
layout="topleft"
name="perm prefs"
help_topic="perm_prefs"
save_rect="true"
title="Default Upload Permissions"
width="315">
<panel
follows="left|top|right|bottom"
height="120"
label="Permissions"
layout="topleft"
left="10"
name="permissions"
top="20"
width="315">
<check_box
control_name="ShareWithGroup"
height="16"
label="Share with group"
layout="topleft"
left="10"
name="share_with_group"
top="5"
width="150" />
<check_box
control_name="EveryoneCopy"
height="16"
label="Allow anyone to copy"
layout="topleft"
left_delta="0"
name="everyone_copy"
top_pad="5"
width="150" />
<text
type="string"
length="1"
follows="left|top"
height="10"
layout="topleft"
left_delta="0"
name="NextOwnerLabel"
top_pad="5"
width="200">
Next owner can:
</text>
<check_box
control_name="NextOwnerModify"
height="16"
label="Modify"
layout="topleft"
left_delta="0"
name="next_owner_modify"
top_pad="5"
width="150" />
<check_box
control_name="NextOwnerCopy"
height="16"
label="Copy"
layout="topleft"
left_delta="0"
name="next_owner_copy"
top_pad="5"
width="150" >
<check_box.commit_callback
function="Perms.Copy" />
</check_box>
<check_box
enabled_control="NextOwnerCopy"
control_name="NextOwnerTransfer"
enabled="false"
height="16"
initial_value="true"
label="Resell/Give away"
layout="topleft"
left_delta="0"
name="next_owner_transfer"
top_pad="5"
width="150" />
</panel>
<button
height="20"
label="OK"
label_selected="OK"
layout="topleft"
left="90"
name="ok"
top="150"
width="100">
<button.commit_callback
function="Perms.OK" />
</button>
<button
height="20"
label="Cancel"
label_selected="Cancel"
layout="topleft"
left_pad="5"
name="cancel"
top_delta="0"
width="100">
<button.commit_callback
function="Perms.Cancel" />
</button>
</floater>

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="perm prefs" title="Domyślne uprawnienia przesyłania">
<panel label="Uprawnienia" name="permissions">
<check_box label="Udostępnij grupie" name="share_with_group"/>
<check_box label="Pozwól kopiować każdemu" name="everyone_copy"/>
<text name="NextOwnerLabel">
Następny Właściciel:
</text>
<check_box label="Modyfikacja" name="next_owner_modify"/>
<check_box label="Kopiowanie" name="next_owner_copy"/>
<check_box label="Transferowanie" name="next_owner_transfer"/>
</panel>
<button label="Anuluj" label_selected="Anuluj" name="cancel"/>
</floater>

View File

@ -222,6 +222,7 @@
<combo_box.item label="Заплатить за объект" name="Payobject"/>
<combo_box.item label="Открыть" name="Open"/>
<combo_box.item label="Увеличить" name="Zoom"/>
<combo_box.item label="Игнорировать" name="Ignoreobject" />
<combo_box.item label="Ничего" name="None"/>
</combo_box>
<check_box label="Для продажи:" name="checkbox for sale" tool_tip="Позволяет людям покупать этот объект, его содержимое или копировать в мире по указанной цене." />

View File

@ -137,7 +137,9 @@
<menu_item_call label="Показать собственные земли" name="My Land"/>
<menu_item_call label="Мой Линден Дом..." name="Linden Home"/>
<menu label="Показать больше" name="LandShow">
<menu_item_check label="Запрещающие линии" name="Ban Lines"/>
<menu_item_check label="Скрыть Запрещающие линии" name="Hide Ban Lines"/>
<menu_item_check label="Показать Запрещающие линии при столкновении" name="Show Ban Lines On Collision"/>
<menu_item_check label="Показать Запрещающие линии при приближении" name="Show Ban Lines On Proximity"/>
<menu_item_check label="Маяки" name="beacons"/>
<menu_item_check label="Линии собственности" name="Property Lines"/>
<menu_item_check label="Владельцев земли" name="Land Owners"/>

View File

@ -83,6 +83,7 @@
<combo_box.item label="Заплатить за объект" name="Payobject"/>
<combo_box.item label="Открыть" name="Open"/>
<combo_box.item label="Приблизить" name="Zoom"/>
<combo_box.item label="Игнорировать объект" name="Ignoreobject"/>
<combo_box.item label="Нет" name="None"/>
</combo_box>
<panel name="perms_inv">

View File

@ -1,2 +1,3 @@
llbase>=1.2.11
autobuild>=3.9.1
llbase=1.2.11
autobuild=3.9.1
llsd=1.2.1

View File

@ -527,7 +527,7 @@ if [ $WANTS_CONFIG -eq $TRUE ] ; then
CRASH_REPORTING="-DRELEASE_CRASH_REPORTING=ON"
if [ ! -z $CHANNEL_SIMPLE ]
then
CRASH_REPORTING="$CRASH_REPORTING -DUSE_BUGSPLAT=On -DBUGSPLAT_DB=firestorm_"`echo $CHANNEL_SIMPLE | tr [:upper:] [:lower:] | sed -e 's/x64//' | sed -e 's/_//g'`
CRASH_REPORTING="$CRASH_REPORTING -DUSE_BUGSPLAT=On -DBUGSPLAT_DB=firestorm_"`echo $CHANNEL_SIMPLE | tr [:upper:] [:lower:] | sed -e 's/x64//' | sed 's/[^A-Za-z0-9]//g'`
fi
else
CRASH_REPORTING="-DRELEASE_CRASH_REPORTING:BOOL=OFF"