diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index cb934635c0..1bbb0546ea 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1027,6 +1027,17 @@ Value 0 + FSSupportGroupChatPrefixTesting + + Comment + Adds (W 56789f* os) to testing group chat + Persist + 1 + Type + Boolean + Value + 0 + AutoCloseOOC Comment @@ -15275,7 +15286,7 @@ Change of this parameter will affect the layout of buttons in notification toast 0 SanityComment - This might cause textures to look blurry and sculpties might fail to load properly. + This might cause textures to look blurry and sculpties might fail to load properly. Please see "Prefrences -> Graphics -> Rendering -> Max Texture Quality Level" to change. Backup 0 @@ -23787,17 +23798,6 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 - FSPurgeInventoryCacheOnStartup - - Comment - Clear the inventory cache of the specific agent (ID) at next startup - Persist - 1 - Type - String - Value - - FSSoundCacheLocation Comment diff --git a/indra/newview/fsdata.cpp b/indra/newview/fsdata.cpp index fc4861fe75..ee816c0901 100644 --- a/indra/newview/fsdata.cpp +++ b/indra/newview/fsdata.cpp @@ -263,7 +263,7 @@ void downloadCompleteScript(LLSD const &aData, std::string const &aURL, std::str LL_WARNS("fsdata") << "Could not read the script library data from "<< aURL << LL_ENDL; return; } - + LLAPRFile outfile ; outfile.open(aFilename, LL_APR_WB); if (!outfile.getFileHandle()) @@ -366,7 +366,7 @@ void FSData::downloadAgents() // TODO: Let the opensim devs and opensim group figure out the best way // to add "agents.xml" URL to the gridinfo protocol. //getAgentsURL(); - + // there is no need for assets.xml URL for opensim grids as the grid owner can just delete // the bad asset itself. } @@ -376,7 +376,7 @@ void FSData::downloadAgents() mAgentsURL = mBaseURL + "/" + "agents.xml"; mAssetsURL = mBaseURL + "/" + "assets.xml"; } - + if (!mAgentsURL.empty()) { mAgentsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename_prefix + "_agents.xml"); @@ -424,7 +424,7 @@ void FSData::processData(const LLSD& fs_data) LLSD::array_const_iterator iter = mRandomMOTDs.beginArray(); gAgent.mMOTD.assign((iter + (ll_rand((S32)mRandomMOTDs.size())))->asString()); } - + // If the event falls withen the current date, use that for MOTD instead. if (fs_data.has("EventsMOTD")) { @@ -521,7 +521,7 @@ void FSData::processAgents(const LLSD& data) if (data.has("Agents")) { const LLSD& agents = data["Agents"]; - for(LLSD::map_const_iterator iter = agents.beginMap(); iter != agents.endMap(); ++iter) + for (LLSD::map_const_iterator iter = agents.beginMap(); iter != agents.endMap(); ++iter) { LLUUID key = LLUUID(iter->first); mSupportAgents[key] = iter->second.asInteger(); @@ -556,13 +556,23 @@ void FSData::processAgents(const LLSD& data) if (data.has("SupportGroups")) { const LLSD& support_groups = data["SupportGroups"]; - for(LLSD::map_const_iterator itr = support_groups.beginMap(); itr != support_groups.endMap(); ++itr) + for (LLSD::map_const_iterator itr = support_groups.beginMap(); itr != support_groups.endMap(); ++itr) { mSupportGroup.insert(LLUUID(itr->first)); LL_DEBUGS("fsdata") << "Added " << itr->first << " to mSupportGroup" << LL_ENDL; } } + if (data.has("TestingGroups")) + { + const LLSD& testing_groups = data["TestingGroups"]; + for (LLSD::map_const_iterator itr = testing_groups.beginMap(); itr != testing_groups.endMap(); ++itr) + { + mTestingGroup.insert(LLUUID(itr->first)); + LL_DEBUGS("fsdata") << "Added " << itr->first << " to mTestingGroup" << LL_ENDL; + } + } + // The presence of just the key is enough to determine that legacy search needs to be disabled on this grid. if (data.has("DisableLegacySearch")) { @@ -663,8 +673,7 @@ LLSD FSData::resolveClientTag(const LLUUID& id, bool new_system, const LLColor4& if (curtag.has("name")) curtag["tpvd"] = true; } } - - + // Filtering starts here: //WS: If we have a tag using the new system, check if we want to display it's name and/or color if (new_system) @@ -676,6 +685,7 @@ LLSD FSData::resolveClientTag(const LLUUID& id, bool new_system, const LLColor4& LLStringFn::replace_ascii_controlchars(clienttagname, LL_UNKNOWN_CHAR); curtag["name"] = clienttagname; } + if (color_client_tags >= 3 || curtag["tpvd"].asBoolean()) { if (curtag["tpvd"].asBoolean() && color_client_tags < 3) @@ -821,9 +831,19 @@ LLSD FSData::allowedLogin() } } +bool FSData::isFirestormGroup(const LLUUID& id) +{ + return isSupportGroup(id) || isTestingGroup(id); +} + bool FSData::isSupportGroup(const LLUUID& id) { - return (mSupportGroup.count(id)); + return mSupportGroup.count(id); +} + +bool FSData::isTestingGroup(const LLUUID& id) +{ + return mTestingGroup.count(id); } bool FSData::isAgentFlag(const LLUUID& agent_id, flags_t flag) diff --git a/indra/newview/fsdata.h b/indra/newview/fsdata.h index 769aa4203e..fa17f34391 100644 --- a/indra/newview/fsdata.h +++ b/indra/newview/fsdata.h @@ -46,7 +46,7 @@ public: void addAgents(); LLSD resolveClientTag(const LLUUID& id, bool new_system, const LLColor4& new_system_color); - + enum flags_t { SUPPORT = (1 << 0), //0x01 1 @@ -60,23 +60,26 @@ public: }; std::set mSupportGroup; + std::set mTestingGroup; bool isDeveloper(const LLUUID& avatar_id); bool isSupport(const LLUUID& avatar_id); bool isQA(const LLUUID& avatar_id); + bool isFirestormGroup(const LLUUID& id); bool isSupportGroup(const LLUUID& id); + bool isTestingGroup(const LLUUID& id); // returns -1 if agent is not found. S32 getAgentFlags(const LLUUID& avatar_id); LLSD allowedLogin(); - + bool enableLegacySearch() {return mLegacySearch;} std::string processRequestForInfo(const LLUUID& requester, const std::string& message, const std::string& name, const LLUUID& sessionid); static LLSD getSystemInfo(); static void callbackReqInfo(const LLSD ¬ification, const LLSD &response); - + std::string getOpenSimMOTD() { return mOpenSimMOTD; } void selectNextMOTD(); diff --git a/indra/newview/fsfloaterim.cpp b/indra/newview/fsfloaterim.cpp index 1d3183a88e..577a11dbb4 100644 --- a/indra/newview/fsfloaterim.cpp +++ b/indra/newview/fsfloaterim.cpp @@ -386,8 +386,9 @@ void FSFloaterIM::sendMsgFromInputEditor(EChatType type) utf8_text = FSCommon::applyMuPose(utf8_text); // Support group chat prefix - static LLCachedControl chat_prefix(gSavedSettings, "FSSupportGroupChatPrefix2"); - if (chat_prefix && FSData::getInstance()->isSupportGroup(mSessionID)) + static LLCachedControl chat_prefix_support(gSavedSettings, "FSSupportGroupChatPrefix2"); + static LLCachedControl chat_prefix_testing(gSavedSettings, "FSSupportGroupChatPrefixTesting"); + if ((chat_prefix_support || chat_prefix_testing) && FSData::getInstance()->isFirestormGroup(mSessionID)) { // FIRE-7075: Skin indicator static LLCachedControl FSInternalSkinCurrent(gSavedSettings, "FSInternalSkinCurrent"); @@ -402,18 +403,46 @@ void FSFloaterIM::sendMsgFromInputEditor(EChatType type) skin_indicator = skin_indicator.substr(0, 1); // "FS 4.4.1f os", "FS 4.4.1v", "FS 4.4.1a", "FS 4.4.1s os", "FS 4.4.1m os" etc. } // - + + //Address size check #if ADDRESS_SIZE == 32 - std::string str_fs_tag = "FS "; + std::string str_address_size_tag = "32"; #else - std::string str_fs_tag = "FS64 "; + std::string str_address_size_tag = ""; #endif - std::string str_os_tag; + + //OpenSim check + std::string str_opensim_tag; #ifdef OPENSIM - str_os_tag = " os"; + str_opensim_tag = " os"; #endif + + //Operating System check +#if LL_WINDOWS + std::string str_operating_system_tag = "W"; +#elif LL_LINUX + std::string str_operating_system_tag = "L"; +#elif LL_DARWIN + std::string str_operating_system_tag = "M"; +#endif + + //RLV check + static LLCachedControl chat_prefix_rlv(gSavedSettings, "RestrainedLove"); + std::string str_rlv_enabled = ""; + if(chat_prefix_rlv) + str_rlv_enabled = "*"; + + + //Build it up size_t insert_pos = is_irc_me_prefix(utf8_text) ? 4 : 0; - utf8_text.insert(insert_pos, ("(" + str_fs_tag + LLVersionInfo::getShortVersion() + skin_indicator + str_os_tag + ") ")); + + //For testing/beta groups, we display the build version since it doesn't speed by and this might change often + if(chat_prefix_testing && FSData::getInstance()->isTestingGroup(mSessionID)) + utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getBuildVersion() + skin_indicator + str_rlv_enabled + str_opensim_tag + ") ")); + + //For release support groups, only display the short version(Major.Minor.Patch) since chat can speed by. This makes it easier on Support's eyes. + else if(chat_prefix_support && FSData::getInstance()->isSupportGroup(mSessionID)) + utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getShortVersion() + skin_indicator + str_rlv_enabled + str_opensim_tag + ") ")); } // Allow user to send system info. @@ -887,8 +916,10 @@ BOOL FSFloaterIM::postBuild() getChild("send_chat")->setCommitCallback(boost::bind(&FSFloaterIM::sendMsgFromInputEditor, this, CHAT_TYPE_NORMAL)); - bool isFSSupportGroup = FSData::getInstance()->isSupportGroup(mSessionID); - childSetVisible("support_panel", isFSSupportGroup); + bool isFSSupportGroup = FSData::getInstance()->isFirestormGroup(mSessionID); + + childSetVisible("testing_panel", FSData::getInstance()->isTestingGroup(mSessionID)); + childSetVisible("support_panel", FSData::getInstance()->isSupportGroup(mSessionID)); // Viewer version popup if (isFSSupportGroup) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index c20cc1da3f..b8014868e2 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -4937,16 +4937,7 @@ bool LLAppViewer::initCache() if(!read_only) { - // Clear inventory cache button - std::string clear_inventory_agent_id = gSavedSettings.getString("FSPurgeInventoryCacheOnStartup"); - if (clear_inventory_agent_id != std::string()) - { - gSavedSettings.setString("FSPurgeInventoryCacheOnStartup", std::string()); - std::string inv_cache_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, clear_inventory_agent_id + ".inv.gz"); - LL_INFOS("LLAppViewer") << "Purging inventory cache file: " << inv_cache_file << LL_ENDL; - LLFile::remove(inv_cache_file); - } - // + // Purge inventory cache is done in LLInventoryModel::loadSkeleton() // Purge cache if user requested it if (gSavedSettings.getBOOL("PurgeCacheOnStartup") || diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 82e2d0d870..ba0abf5641 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -311,7 +311,12 @@ bool callback_clear_inventory_cache(const LLSD& notification, const LLSD& respon if ( option == 0 ) // YES { // flag client texture cache for clearing next time the client runs - gSavedSettings.setString("FSPurgeInventoryCacheOnStartup", gAgentID.asString()); + + // use a marker file instead of a settings variable to prevent logout crashes and + // dual log ins from messing with the flag. -Zi + std::string delete_cache_marker = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, gAgentID.asString() + "_DELETE_INV_GZ"); + FILE* fd = LLFile::fopen(delete_cache_marker, "w"); + LLFile::close(fd); LLNotificationsUtil::add("CacheWillClear"); } @@ -5189,8 +5194,25 @@ void FSPanelPreferenceBackup::changeBackupSettingsPath(const std::vector diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index ff80d3fbef..7131ec8a3b 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -2141,6 +2141,34 @@ bool LLInventoryModel::loadSkeleton( const LLSD& options, const LLUUID& owner_id) { + // Purge inventory cache files marked by DELETE_INV_GZ marker files + std::string delete_cache_marker = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, owner_id.asString() + "_DELETE_INV_GZ"); + LL_DEBUGS("LLInventoryModel") << "Checking for clear inventory cache marker: " << delete_cache_marker << LL_ENDL; + + // if this marker exists, go ahead and delete the respective .inv and/or .inv.gz files + if (LLFile::isfile(delete_cache_marker)) + { + LL_INFOS("LLInventoryModel") << "Clear inventory cache marker found: " << delete_cache_marker << LL_ENDL; + + std::string inventory_filename = getInvCacheAddres(owner_id); + if (LLFile::isfile(inventory_filename)) + { + LL_INFOS("LLInventoryModel") << "Purging inventory cache file: " << inventory_filename << LL_ENDL; + LLFile::remove(inventory_filename); + } + + inventory_filename.append(".gz"); + if (LLFile::isfile(inventory_filename)) + { + LL_INFOS("LLInventoryModel") << "Purging inventory cache file: " << inventory_filename << LL_ENDL; + LLFile::remove(inventory_filename); + } + + LL_INFOS("LLInventoryModel") << "Clear inventory cache marker removed: " << delete_cache_marker << LL_ENDL; + LLFile::remove(delete_cache_marker); + } + // + LL_DEBUGS(LOG_INV) << "importing inventory skeleton for " << owner_id << LL_ENDL; typedef std::set, InventoryIDPtrLess> cat_set_t; diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index 3d000d4267..8d5168ba24 100644 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -85,6 +85,22 @@ const std::string &LLVersionInfo::getVersion() return version; } +// +//static +const std::string &LLVersionInfo::getBuildVersion() +{ + static std::string build_version(""); + if (build_version.empty()) + { + std::ostringstream stream; + stream << LLVersionInfo::getBuild(); + // cache the version string + build_version = stream.str(); + } + return build_version; +} +// + //static const std::string &LLVersionInfo::getShortVersion() { diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h index 5c3b7bf878..fed6b0efb5 100644 --- a/indra/newview/llversioninfo.h +++ b/indra/newview/llversioninfo.h @@ -56,6 +56,11 @@ public: /// return the full viewer version as a string like "2.0.0.200030" static const std::string &getVersion(); +// + /// return the full viewer version as a string like "200030" + static const std::string &getBuildVersion(); +// + /// return the viewer version as a string like "2.0.0" static const std::string &getShortVersion(); diff --git a/indra/newview/skins/default/xui/de/floater_fs_im_session.xml b/indra/newview/skins/default/xui/de/floater_fs_im_session.xml index a8418b44ea..20fd70b615 100644 --- a/indra/newview/skins/default/xui/de/floater_fs_im_session.xml +++ b/indra/newview/skins/default/xui/de/floater_fs_im_session.xml @@ -48,6 +48,9 @@ + + + diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 921c8eb26d..7dcc5daac3 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -5074,6 +5074,13 @@ Der Sicherungspfad konnte nicht gefunden oder erstellt werden. Der Sicherungspfad konnte nicht gefunden werden. + + Möchten Sie wirklich eine Sicherung in diesem Verzeichnis erstellen? +[DIRECTORY] +Bestehende Sicherungen in diesem Verzeichnis werden überschrieben! + + + Das Wiederherstellen von Einstellungen erfordert einen Neustart des Viewers. Sollen die Einstellungen jetzt wiederhergestellt und der Viewer beendet werden? diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml index d8326a0824..642c4a3f46 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml @@ -146,14 +146,14 @@ - + Maximales Qualitätslevel für Texturen: - - - - + + + + Darstellung von Alpha-Masken: diff --git a/indra/newview/skins/default/xui/en/floater_fs_im_session.xml b/indra/newview/skins/default/xui/en/floater_fs_im_session.xml index 8931b32e2f..ac2d45a1b1 100644 --- a/indra/newview/skins/default/xui/en/floater_fs_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_fs_im_session.xml @@ -452,8 +452,37 @@ name="FSSupportGroupChatPrefix_toggle" tool_tip="Adds your current viewer version and skin information to the front of messages sent by you to this group which will assist support staff in correctly diagnosing your issues and improve accuracy in answering your questions" width="110" /> - + + + + + + +Are you sure you want to save a backup to this directory? +[DIRECTORY] +Any existing backups in that location will be overwritten! + + + + width="150" + tool_tip="Quality to load textures to, affects the setting TextureDiscardLevel"> diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml index 6cf4ae6ce6..7ee7bf4632 100644 --- a/indra/newview/skins/default/xui/pl/notifications.xml +++ b/indra/newview/skins/default/xui/pl/notifications.xml @@ -4710,6 +4710,12 @@ Poprzedni symulator: [OLDVERSION] Ścieżka miejsca zapisu jest pusta. Proszę najpierw podać lokalizację, w jakiej będą zapisywanie i której będą przywracane kopie zapasowe. + + Czy na pewno chcesz zapisać kopię zapasową w tym katalogu? +[DIRECTORY] +Wszelkie istniejące kopie zapasowe w tej lokalizacji zostaną nadpisane! + + Przywrócenie ustawień wymaga ponownego uruchomienia przeglądarki. Czy chcesz teraz przywrócić ustawienia i wyłączyć ją? @@ -4882,6 +4888,9 @@ Mnożnik LOD >8: Brak widocznych efektów. Może powodować błędy. Należy pamiętać, że zakupy w walucie dokonywane za pośrednictwem Firestorm Viewer są transakcjami między Tobą (użytkownikiem) a dostawcą (-ami) lub sprzedawcą (-ami) waluty. Ani Firestorm Viewer, ani Phoenix Firestorm Viewer Project Inc., ani jego zespół nie ponoszą odpowiedzialności za jakiekolwiek koszty lub szkody wynikające bezpośrednio lub pośrednio z takich transakcji. Jeśli nie zgadzasz się z niniejszymi warunkami użytkowania, nie należy przeprowadzać transakcji finansowych za pomocą tej przeglądarki. - + + + + Włączenie obsługi HiDPI może mieć niekorzystne skutki i pogorszyć wydajność. diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml index a70dbf6558..557ca79412 100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml @@ -132,11 +132,11 @@ Maksymalny poziom jakości tekstur: - - - - - + + + + + Maski przezroczystości (alpha): diff --git a/indra/newview/skins/vintage/xui/en/floater_fs_im_session.xml b/indra/newview/skins/vintage/xui/en/floater_fs_im_session.xml index 3966273e25..0a5a4175ef 100644 --- a/indra/newview/skins/vintage/xui/en/floater_fs_im_session.xml +++ b/indra/newview/skins/vintage/xui/en/floater_fs_im_session.xml @@ -429,8 +429,29 @@ name="FSSupportGroupChatPrefix_toggle" tool_tip="Adds your current viewer version and skin information to the front of messages sent by you to this group which will assist support staff in correctly diagnosing your issues and improve accuracy in answering your questions" width="110" /> - + + + +