From 42e1a9ed870c537b5684cd15a7acc524a3672685 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Mon, 27 Jan 2020 17:54:02 +0200 Subject: SL-12475 add Inventory Favorites tab # Conflicts: # indra/newview/llinventorybridge.cpp # indra/newview/llinventorypanel.cpp --- indra/newview/app_settings/settings_per_account.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'indra/newview/app_settings') diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml index 8f4ca6c633..5eecf1b9f5 100644 --- a/indra/newview/app_settings/settings_per_account.xml +++ b/indra/newview/app_settings/settings_per_account.xml @@ -392,6 +392,17 @@ Value + FavoritesFolder + + Comment + User's chosen folder which will be shown in the Favorites tab (UUID) + Persist + 1 + Type + String + Value + + SnapshotBaseDir Comment -- cgit v1.3 From 33eadba6ef703c1fb0a8f4bffe49ccea224fb77f Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Thu, 25 Mar 2021 18:57:30 +0200 Subject: SL-15028 Guidebook floater --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llviewermenu.cpp | 5 ++--- indra/newview/skins/default/xui/en/floater_how_to.xml | 12 +++++------- indra/newview/skins/default/xui/en/menu_viewer.xml | 9 +-------- 4 files changed, 19 insertions(+), 18 deletions(-) (limited to 'indra/newview/app_settings') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index c0166f158e..4610cd58af 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4725,6 +4725,17 @@ Value https://search.[GRID]/viewer/[CATEGORY]/?q=[QUERY]&p=[AUTH_TOKEN]&r=[MATURITY]&lang=[LANGUAGE]&g=[GODLIKE]&sid=[SESSION_ID]&rid=[REGION_ID]&pid=[PARCEL_ID]&channel=[CHANNEL]&version=[VERSION]&major=[VERSION_MAJOR]&minor=[VERSION_MINOR]&patch=[VERSION_PATCH]&build=[VERSION_BUILD] + GuidebookURL + + Comment + URL for Guidebook content + Persist + 1 + Type + String + Value + https://guidebooks.secondlife.io/welcome + HighResSnapshot Comment diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 41122a51b1..1aa67a30cd 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7730,12 +7730,11 @@ class LLToggleHowTo : public view_listener_t bool handleEvent(const LLSD& userdata) { LLFloaterWebContent::Params p; - std::string url = gSavedSettings.getString("HowToHelpURL"); + std::string url = gSavedSettings.getString("GuidebookURL"); p.url = LLWeb::expandURLSubstitutions(url, LLSD()); p.show_chrome = false; - p.target = "__help_how_to"; p.show_page_title = false; - p.preferred_media_size = LLRect(0, 460, 335, 0); + p.preferred_media_size = LLRect(0, 500, 300, 0); LLFloaterReg::toggleInstanceOrBringToFront("how_to", p); return true; diff --git a/indra/newview/skins/default/xui/en/floater_how_to.xml b/indra/newview/skins/default/xui/en/floater_how_to.xml index 8c0077a8cc..b79584c7b7 100644 --- a/indra/newview/skins/default/xui/en/floater_how_to.xml +++ b/indra/newview/skins/default/xui/en/floater_how_to.xml @@ -1,18 +1,16 @@ \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 0d456ffe5d..456d131d9c 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -1596,20 +1596,13 @@ function="World.EnvPreset" name="Help" tear_off="true"> - - - Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]. - Didn't find what you're looking for? Try [secondlife:///app/inventory/filters Show filters]. - Click "Use as Favorites folder" on a folder of your choice. You can choose a different folder at any time. System folders and folders inside them cannot be used for Favorites. + Didn't find what you're looking for? Try [secondlife:///app/inventory/filters Show filters]. To add a place to your landmarks, click the star to the right of the location name. To add a place to your favorites bar, click the star to the right of the location name. No items found. Check the spelling of your search string and try again. -- cgit v1.3 From 297b81b03ad1e01339735e612dbf17f131019403 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Wed, 21 Apr 2021 15:39:01 +0300 Subject: SL-15028 Update GuidebookURL setting --- indra/newview/app_settings/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/app_settings') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 25627e61ae..943062c127 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4734,7 +4734,7 @@ Type String Value - https://guidebooks.secondlife.io/welcome + http://guidebooks.secondlife.io/welcome/index.html HighResSnapshot -- cgit v1.3 From 79f8c024c34efad93ce55ebacf656e6fc9804198 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 9 Jun 2021 19:46:23 +0300 Subject: SL-15363 how_to on older viewers is forced to persist Older how_to floater is not set to persist in between sessions and gets stuck, ranamed new how_to into guidebook to avoid the issue --- indra/newview/app_settings/commands.xml | 4 ++-- indra/newview/llfloaterhowto.cpp | 2 +- indra/newview/llurlfloaterdispatchhandler.cpp | 10 +++++----- indra/newview/llviewerfloaterreg.cpp | 2 +- indra/newview/llviewermenu.cpp | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) (limited to 'indra/newview/app_settings') diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml index 91841b970d..d0480ca47e 100644 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -89,9 +89,9 @@ label_ref="Command_HowTo_Label" tooltip_ref="Command_HowTo_Tooltip" execute_function="Floater.ToggleOrBringToFront" - execute_parameters="how_to" + execute_parameters="guidebook" is_running_function="Floater.IsOpen" - is_running_parameters="how_to" + is_running_parameters="guidebook" /> ("how_to"); + return LLFloaterReg::getTypedInstance("guidebook"); } BOOL LLFloaterHowTo::handleKeyHere(KEY key, MASK mask) diff --git a/indra/newview/llurlfloaterdispatchhandler.cpp b/indra/newview/llurlfloaterdispatchhandler.cpp index 2e595390cc..6b1a373beb 100644 --- a/indra/newview/llurlfloaterdispatchhandler.cpp +++ b/indra/newview/llurlfloaterdispatchhandler.cpp @@ -50,8 +50,8 @@ const std::string KEY_URL("floater_url"); const std::string KEY_PARAMS("floater_params"); // Supported floaters -const std::string FLOATER_GUIDEBOOK("guidebook"); // alias for how_to -const std::string FLOATER_HOW_TO("how_to"); +const std::string FLOATER_GUIDEBOOK("guidebook"); +const std::string FLOATER_HOW_TO("how_to"); // alias for guidebook const std::string FLOATER_WEB_CONTENT("web_content"); // All arguments are palceholders! Server side will need to add validation first. @@ -163,17 +163,17 @@ bool LLUrlFloaterDispatchHandler::operator()(const LLDispatcher *, const std::st // only one instance of guidebook can exist at a time, so if this command arrives, // we need to close previous guidebook then reopen it. - LLFloater* instance = LLFloaterReg::findInstance("how_to"); + LLFloater* instance = LLFloaterReg::findInstance("guidebook"); if (instance) { instance->closeHostedFloater(); } - LLFloaterReg::toggleInstanceOrBringToFront("how_to", params); + LLFloaterReg::toggleInstanceOrBringToFront("guidebook", params); if (command_params.isMap()) { - LLFloater* instance = LLFloaterReg::findInstance("how_to"); + LLFloater* instance = LLFloaterReg::findInstance("guidebook"); if (command_params.has(KEY_CAN_CLOSE)) { instance->setCanClose(command_params[KEY_CAN_CLOSE].asBoolean()); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index de184392f9..5a05f89758 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -363,7 +363,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("search", "floater_search.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("my_profile", "floater_my_web_profile.xml", (LLFloaterBuildFunc)&LLFloaterWebProfile::create); LLFloaterReg::add("profile", "floater_web_profile.xml", (LLFloaterBuildFunc)&LLFloaterWebProfile::create); - LLFloaterReg::add("how_to", "floater_how_to.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); + LLFloaterReg::add("guidebook", "floater_how_to.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("big_preview", "floater_big_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d3d205d509..fbf057603e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7739,7 +7739,7 @@ class LLToggleHowTo : public view_listener_t { bool handleEvent(const LLSD& userdata) { - LLFloaterReg::toggleInstanceOrBringToFront("how_to"); + LLFloaterReg::toggleInstanceOrBringToFront("guidebook"); return true; } }; -- cgit v1.3 From d1b52bd9d806e8ea2cc9ab37193d06521bbb0e87 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Thu, 10 Jun 2021 16:22:59 -0700 Subject: Fix for SL-15381 Import Vivox VAD voice fixes into 'Viewer UI changes' branch --- indra/newview/app_settings/settings.xml | 48 ++++++++++++++++- indra/newview/llvoicevivox.cpp | 94 +++++++++++++++++++++++++++++++++ indra/newview/llvoicevivox.h | 6 +++ 3 files changed, 147 insertions(+), 1 deletion(-) (limited to 'indra/newview/app_settings') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 1df3ed5346..a2933b85a5 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -14436,7 +14436,53 @@ Value 44125 - VoiceCallsFriendsOnly + + VivoxVadAuto + + Comment + A flag indicating if the automatic VAD is enabled (1) or disabled (0). The individual settings are ignored if the auto-mode is enabled + Persist + 1 + Type + U32 + Value + 0 + + VivoxVadHangover + + Comment + The time (in milliseconds) that it takes or the VAD to switch back to silence from speech mode after the last speech frame has been detected + Persist + 1 + Type + U32 + Value + 2000 + + VivoxVadNoiseFloor + + Comment + A dimensionless value between 0 and 20000 (default 576) that controls the maximum level at which the noise floor may be set at by the VAD's noise tracking + Persist + 1 + Type + U32 + Value + 576 + + VivoxVadSensitivity + + Comment + + A dimensionless value between 0 and 100, indicating the 'sensitivity of the VAD'. Increasing this value corresponds to decreasing the sensitivity of the VAD and 0 is turned off altogether + Persist + 1 + Type + U32 + Value + 0 + + VoiceCallsFriendsOnly Comment (Deprecated) Only accept voice calls from residents on your friends list diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index b0f57beff8..7d8aa6fbbd 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -684,6 +684,21 @@ void LLVivoxVoiceClient::voiceControlCoro() bool success = startAndConnectSession(); if (success) { + // enable/disable the automatic VAD and explicitly set the initial values of + // the VAD variables ourselves when it is off - see SL-15072 for more details + // note: we set the other parameters too even if the auto VAD is on which is ok + unsigned int vad_auto = gSavedSettings.getU32("VivoxVadAuto"); + unsigned int vad_hangover = gSavedSettings.getU32("VivoxVadHangover"); + unsigned int vad_noise_floor = gSavedSettings.getU32("VivoxVadNoiseFloor"); + unsigned int vad_sensitivity = gSavedSettings.getU32("VivoxVadSensitivity"); + setupVADParams(vad_auto, vad_hangover, vad_noise_floor, vad_sensitivity); + + // watch for changes to the VAD settings via Debug Settings UI and act on them accordingly + gSavedSettings.getControl("VivoxVadAuto")->getSignal()->connect(boost::bind(&LLVivoxVoiceClient::onVADSettingsChange, this)); + gSavedSettings.getControl("VivoxVadHangover")->getSignal()->connect(boost::bind(&LLVivoxVoiceClient::onVADSettingsChange, this)); + gSavedSettings.getControl("VivoxVadNoiseFloor")->getSignal()->connect(boost::bind(&LLVivoxVoiceClient::onVADSettingsChange, this)); + gSavedSettings.getControl("VivoxVadSensitivity")->getSignal()->connect(boost::bind(&LLVivoxVoiceClient::onVADSettingsChange, this)); + if (mTuningMode) { performMicTuning(); @@ -3230,6 +3245,73 @@ void LLVivoxVoiceClient::sendLocalAudioUpdates() } } +/** + * Because of the recurring voice cutout issues (SL-15072) we are going to try + * to disable the automatic VAD (Voice Activity Detection) and set the associated + * parameters directly. We will expose them via Debug Settings and that should + * let us iterate on a collection of values that work for us. Hopefully! + * + * From the VIVOX Docs: + * + * VadAuto: A flag indicating if the automatic VAD is enabled (1) or disabled (0) + * + * VadHangover: The time (in milliseconds) that it takes + * for the VAD to switch back to silence from speech mode after the last speech + * frame has been detected. + * + * VadNoiseFloor: A dimensionless value between 0 and + * 20000 (default 576) that controls the maximum level at which the noise floor + * may be set at by the VAD's noise tracking. Too low of a value will make noise + * tracking ineffective (A value of 0 disables noise tracking and the VAD then + * relies purely on the sensitivity property). Too high of a value will make + * long speech classifiable as noise. + * + * VadSensitivity: A dimensionless value between 0 and + * 100, indicating the 'sensitivity of the VAD'. Increasing this value corresponds + * to decreasing the sensitivity of the VAD (i.e. '0' is most sensitive, + * while 100 is 'least sensitive') + */ +void LLVivoxVoiceClient::setupVADParams(unsigned int vad_auto, + unsigned int vad_hangover, + unsigned int vad_noise_floor, + unsigned int vad_sensitivity) +{ + std::ostringstream stream; + + LL_INFOS("Voice") << "Setting the automatic VAD to " + << (vad_auto ? "True" : "False") + << " and discrete values to" + << " VadHangover = " << vad_hangover + << ", VadSensitivity = " << vad_sensitivity + << ", VadNoiseFloor = " << vad_noise_floor + << LL_ENDL; + + // Create a request to set the VAD parameters: + stream << "" + << "" << vad_auto << "" + << "" << vad_hangover << "" + << "" << vad_sensitivity << "" + << "" << vad_noise_floor << "" + << "\n\n\n"; + + if (!stream.str().empty()) + { + writeString(stream.str()); + } +} + +void LLVivoxVoiceClient::onVADSettingsChange() +{ + // pick up the VAD variables (one of which was changed) + unsigned int vad_auto = gSavedSettings.getU32("VivoxVadAuto"); + unsigned int vad_hangover = gSavedSettings.getU32("VivoxVadHangover"); + unsigned int vad_noise_floor = gSavedSettings.getU32("VivoxVadNoiseFloor"); + unsigned int vad_sensitivity = gSavedSettings.getU32("VivoxVadSensitivity"); + + // build a VAD params change request and send it to SLVoice + setupVADParams(vad_auto, vad_hangover, vad_noise_floor, vad_sensitivity); +} + ///////////////////////////// // Response/Event handlers @@ -7582,6 +7664,18 @@ void LLVivoxProtocolParser::processResponse(std::string tag) { LLVivoxVoiceClient::getInstance()->accountGetTemplateFontsResponse(statusCode, statusString); } + else if (!stricmp(actionCstr, "Aux.SetVadProperties.1")) + { + // both values of statusCode (old and more recent) indicate valid requests + if (statusCode != 0 && statusCode != 200) + { + LL_WARNS("Voice") << "Aux.SetVadProperties.1 request failed: " + << "statusCode: " << statusCode + << " and " + << "statusString: " << statusString + << LL_ENDL; + } + } /* else if (!stricmp(actionCstr, "Account.ChannelGetList.1")) { diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index 699c85066b..746201af04 100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h @@ -472,6 +472,12 @@ protected: void muteListChanged(); + ///////////////////////////// + // VAD changes + // disable auto-VAD and configure VAD parameters explicitly + void setupVADParams(unsigned int vad_auto, unsigned int vad_hangover, unsigned int vad_noise_floor, unsigned int vad_sensitivity); + void onVADSettingsChange(); + ///////////////////////////// // Sending updates of current state void updatePosition(void); -- cgit v1.3