On a parcel with voice disabled, the viewer keeps requesting voice info
every two frames, cycling between states stateNoChannel and
stateRetrievingParcelVoiceInfo.
This commit fixes that: if voice is disabled on the parcel then mAreaVoiceDisabled
is set (because the url is empty) and we stop requesting voice info until the parcel changes again.
If voice is enabled while we are in the stateNoChannel then we drop
out of that because mNextAudioSession gets set (to stateJoiningSession).
If the viewer has voice disabled, then now it drops correctly
out of the stateNoChannel into stateDisabled.
Condenses the three moderation responders to one.
Adds Speakers settings.
Uses dedicated timer class to track speakers on the list
Adds temporary getSpeakerManager() function to LLFloaterIMPanel to play the role of LLIMModel::getSpeakerManager
Migrate a bunch of classes out of llvoiceclient.* and into new llvoicevivox.*
Update most of these to match their counterparts
Introduce VoiceFonts support (voice morphing, floater still to come)
Support for a bunch of v3 voice settings.
Move volume settings management from LLMutelist into LLSpeakerVolumeStorage
Support for Avaline mutes (WIP)
Adds voice section to LLAgent
Moved llfloatervoicedevicesettings to llpanelvoicedevicesettings, v3's voice device panel design is more intuitive.