diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 1f4aac3a2e..c1b44bbe7b 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2253,7 +2253,7 @@ Type U32 Value - 120 + 60 BackgroundYieldTime @@ -24085,7 +24085,7 @@ Change of this parameter will affect the layout of buttons in notification toast Type Boolean Value - 0 + 1 FSSoundCacheLocation @@ -25931,5 +25931,16 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 + FSShowWhitelistReminder + + Comment + Show the whitelist reminder on first install. + Persist + 1 + Type + Boolean + Value + 1 + diff --git a/indra/newview/fsfloaterperformance.cpp b/indra/newview/fsfloaterperformance.cpp index 7576ff5eb9..81279fc469 100644 --- a/indra/newview/fsfloaterperformance.cpp +++ b/indra/newview/fsfloaterperformance.cpp @@ -315,7 +315,7 @@ void FSFloaterPerformance::draw() args["FPSCAP"] = llformat("%02u", (U32)fpsCap); args["FPSTARGET"] = llformat("%02u", (U32)targetFPS); S32 refresh_rate = gViewerWindow->getWindow()->getRefreshRate(); - args["VSYNCFREQ"] = llformat("%02d", (U32)refresh_rate); + args["VSYNCFREQ"] = llformat("%03d", (U32)refresh_rate); auto textbox = getChild("fps_warning"); // Note: the ordering of these is important. // 1) background_yield should override others diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index c81f62ff8d..a0202677c1 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -3336,8 +3336,13 @@ void login_show() //LLPanelLogin::show( gViewerWindow->getWindowRectScaled(), login_callback, NULL ); FSPanelLogin::show( gViewerWindow->getWindowRectScaled(), login_callback, NULL ); // [FS Login Panel] - - LLNotificationsUtil::add("WhitelistReminder"); // Whitelist reminder + // Whitelist reminder + if( gSavedSettings.getBOOL("FSShowWhitelistReminder") ) + { + LLNotificationsUtil::add("WhitelistReminder"); + gSavedSettings.setBOOL("FSShowWhitelistReminder", false); + } + // } // Callback for when login screen is closed. Option 0 = connect, option 1 = quit. diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 5284d40d86..8288849701 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -63,10 +63,12 @@ #include "llresmgr.h" #include "llworld.h" #include "llstatgraph.h" +#include "llurlaction.h" #include "llviewermedia.h" #include "llviewermenu.h" // for gMenuBarView #include "llviewerparcelmgr.h" #include "llviewerthrottle.h" +#include "llwindow.h" #include "lluictrlfactory.h" #include "lltoolmgr.h" @@ -483,7 +485,11 @@ bool LLStatusBar::postBuild() mBalancePanel = getChild("balance_bg"); mTimeMediaPanel = getChild("time_and_media_bg"); + // Make FPS a clickable button with contextual colour + // mFPSText = getChild("FPSText"); mFPSText = getChild("FPSText"); + mFPSText->setClickedCallback(std::bind(&LLUrlAction::executeSLURL, "secondlife:///app/openfloater/preferences?search=limit%20framerate", true)); + // mVolumeIconsWidth = mBtnVolume->getRect().mRight - mStreamToggle->getRect().mLeft; initParcelIcons(); @@ -598,8 +604,52 @@ void LLStatusBar::refresh() static LLCachedControl fsStatusBarShowFPS(gSavedSettings, "FSStatusBarShowFPS"); if (fsStatusBarShowFPS && mFPSUpdateTimer.getElapsedTimeF32() > 1.f) { + static LLCachedControl max_fps(gSavedSettings, "FramePerSecondLimit"); + static LLCachedControl limit_fps_enabled(gSavedSettings, "FSLimitFramerate"); + static LLCachedControl vsync_enabled(gSavedSettings, "RenderVSyncEnable"); + + static const auto fps_below_limit_color = LLUIColorTable::instance().getColor("Yellow"); + static const auto fps_limit_reached_color = LLUIColorTable::instance().getColor("Green"); + static const auto vsync_limit_reached_color = LLUIColorTable::instance().getColor("Green"); + static const auto fps_uncapped_color = LLUIColorTable::instance().getColor("White"); + static const auto fps_unfocussed_color = LLUIColorTable::instance().getColor("Gray"); + static auto current_fps_color = fps_uncapped_color; + mFPSUpdateTimer.reset(); - mFPSText->setText(llformat("%.1f", LLTrace::get_frame_recording().getPeriodMedianPerSec(LLStatViewer::FPS))); + const auto fps = LLTrace::get_frame_recording().getPeriodMedianPerSec(LLStatViewer::FPS); + mFPSText->setText(llformat("%.1f", fps)); + + // if background, go grey, else go white unless we have a cap (checked next) + auto fps_color{ fps_uncapped_color }; + auto window = gViewerWindow ? gViewerWindow->getWindow() : nullptr; + if ((window && !window->getVisible()) || !gFocusMgr.getAppHasFocus()) + { + fps_color = fps_unfocussed_color; + } + else + { + S32 vsync_freq{ -1 }; + if (window) + { + vsync_freq = window->getRefreshRate(); + } + + if (limit_fps_enabled && max_fps > 0) + { + fps_color = (fps >= max_fps - 1) ? fps_limit_reached_color : fps_below_limit_color; + } + // use vsync if enabled and the freq is lower than the max_fps + if (vsync_enabled && vsync_freq > 0 && (!limit_fps_enabled || vsync_freq < (S32)max_fps)) + { + fps_color = (fps >= vsync_freq - 1) ? vsync_limit_reached_color : fps_below_limit_color; + } + } + + if (current_fps_color != fps_color) + { + mFPSText->setColor(fps_color); + current_fps_color = fps_color; + } } // diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 0f80fc3ddb..c5eb17e125 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -2352,6 +2352,7 @@ bool LLToolPie::handleRightClickPick() } else { + gMenuObject->setItemVisible("Take Multiple", (LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() > 1)); gMenuObject->show(x, y); } // diff --git a/indra/newview/skins/default/xui/az/menu_pie_object.xml b/indra/newview/skins/default/xui/az/menu_pie_object.xml index 6893e78964..740bc1c4fe 100644 --- a/indra/newview/skins/default/xui/az/menu_pie_object.xml +++ b/indra/newview/skins/default/xui/az/menu_pie_object.xml @@ -14,6 +14,7 @@ + diff --git a/indra/newview/skins/default/xui/az/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/az/panel_preferences_graphics1.xml index 4131ddb6d3..b664af7fe6 100644 --- a/indra/newview/skins/default/xui/az/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/az/panel_preferences_graphics1.xml @@ -100,7 +100,6 @@ - @@ -127,6 +126,8 @@ Dünya yeniləməsi: + + Teksturların çəkilişi: @@ -150,7 +151,6 @@ - diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml index 89b728e5f1..3f8d5ee08a 100644 --- a/indra/newview/skins/default/xui/de/menu_object.xml +++ b/indra/newview/skins/default/xui/de/menu_object.xml @@ -41,9 +41,9 @@ - - - + + + diff --git a/indra/newview/skins/default/xui/de/menu_pie_object.xml b/indra/newview/skins/default/xui/de/menu_pie_object.xml index 305e989e7b..22ddce44dd 100644 --- a/indra/newview/skins/default/xui/de/menu_pie_object.xml +++ b/indra/newview/skins/default/xui/de/menu_pie_object.xml @@ -18,6 +18,7 @@ + diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index a08305b3fa..4b54fea90a 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -5858,6 +5858,5 @@ Einige Antivirus-Programme können fälschlicherweise Teile von [APP_NAME] block Detaillierte Instruktionen zum whitelisten von [APP_NAME] - inklusive einer Liste von Dateien und Verzeichnissen - finden Sie in unserem Ratgeber: https://wiki.firestormviewer.org/antivirus_whitelisting - 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 c85c2c1aeb..9f9278fb62 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml @@ -139,7 +139,6 @@ - S3TC aktivieren: @@ -164,6 +163,8 @@ Welt-Aktualisierung: + + Textur-Darstellung: @@ -200,7 +201,6 @@ - diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index 2124fc2deb..202039183a 100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -290,31 +290,31 @@ - - - - - - - + - - - - + + + + + + @@ -339,8 +348,6 @@ - - diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index dda61c9ef3..eb52b744b9 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -14640,10 +14640,6 @@ Some antivirus programs may mistakenly block parts of [APP_NAME], slowing down i For detailed instructions on how to whitelist [APP_NAME] - including a list of files and folders to exclude - please visit our guide: https://wiki.firestormviewer.org/antivirus_whitelisting - diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 2c927502a1..5bbc1366bf 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -961,17 +961,6 @@ tool_tip="This checkbox enables anisotropic filtering, which is a method to enhance the quality of textures when they are viewed at relatively large angles in relation to your camera position. Usually makes them look less blurry at greater distances." top="20" width="256" /> - + + + + + - - 200.0 diff --git a/indra/newview/skins/default/xui/es/menu_pie_object.xml b/indra/newview/skins/default/xui/es/menu_pie_object.xml index ce6cae3d85..20b25e23ae 100644 --- a/indra/newview/skins/default/xui/es/menu_pie_object.xml +++ b/indra/newview/skins/default/xui/es/menu_pie_object.xml @@ -14,6 +14,7 @@ + diff --git a/indra/newview/skins/default/xui/fr/floater_fs_poser.xml b/indra/newview/skins/default/xui/fr/floater_fs_poser.xml new file mode 100644 index 0000000000..8cb140afa9 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_fs_poser.xml @@ -0,0 +1,285 @@ + + + Corps + Front/sourcils + Yeux/Paupières + Joues/Lèvres + Main gauche + Bras gauche + Main droite + Bras droit + Jambes + Queue + Membres postérieurs + Ailes + Oreilles/nez + Tout l'avatar + Torse + Poitrine + Cou + Tête + Oeil droit + Oeil gauche + Front, côté gauche + Front, côté droit + Sourcil, extérieur gauche + Sourcil, milieu gauche + Sourcil, intérieur gauche + Sourcil, extérieur droit + Sourcil, milieu droit + Sourcil, intérieur droit + Paupière, en haut à gauche + Paupière, en bas à gauche + Paupière, en haut à droite + Paupière en bas à droite + Oreille en haut à gauche + Oreille en bas à gauche + Oreille en haut à droite + Oreille en bas à droite + Nez à gauche + Nez au milieu + Nez à droite + Bas de la joue gauche + Haut de la joue gauche + Bas de la joue droite + Haut de la joue droite + Mâchoire + Dents du bas + Lèvre du bas à gauche + Lèvre du bas à droite + Lèvre du bas au milieu + Base de la langue + Extrémité de la langue + Forme de la mâchoire + Milieu du front + Base du nez + Dents du haut + Lèvre supérieure à gauche + Lèvre supérieure à droite + Coin gauche de la bouche + Coin droit de la bouche + Milieu de la lèvre supérieure + Coin interne gauche de l'œil + Coin interne droit de l'œil + Arête du nez + Col + Bras entier + Avant-bras + Poignet + Base du majeur + Milieu du majeur + Extrémité du majeur + Base de l'index + Milieu de l'index + Extrémité de l'index + Base de l'annulaire + Milieu de l'annulaire + Extrémité de l'annulaire + Base de l'auriculaire + Milieu de l'auriculaire + Extrémité de l'auriculaire + Base du pouce + Milieu du pouce + Extrémité du pouce + Col + Bras entier + Avant-bras + Poignet + Base du majeur + Milieu du majeur + Extrémité du majeur + Base de l'index + Milieu de l'index + Extrémité de l'index + Base de l'annulaire + Milieu de l'annulaire + Extrémité de l'annulaire + Base de l'auriculaire + Milieu de l'auriculaire + Extrémité de l'auriculaire + Base du pouce + Milieu du pouce + Extrémité du pouce + Articulations + Gauche 1 + Gauche 2 + Gauche 3 + Gauche 4 + Pale gauche + Droite 1 + Droite 2 + Droite 3 + Droite 4 + Pale droit + Jambe droite + Genou droit + Cheville droite + Pied droit + Orteil droit + Jambe gauche + Genou gauche + Cheville gauche + Pied gauche + Orteil gauche + Base de la queue + Queue 2 + Queue 3 + Queue 4 + Queue 5 + Extrémité de la queue + Entrejambe + Membres postérieurs + Pied gauche + Gauche 2 + Gauche 3 + Gauche 4 + Pied droit + Droite 2 + Droite 3 + Droite 4 + Fesses + Ventre + Sein gauche + Sein droit + Base gauche + Base droite + Pointe gauche + Pointe droite + + + + + + + + Haut/bas : + + + + Gauche/droite : + + + + Avant/arrière : + + + + + + + + + + + + + + + + + + + + + + +