summaryrefslogtreecommitdiff
path: root/indra/newview/llvoicevivox.cpp
AgeCommit message (Collapse)Author
2021-10-28SL-15462 Convert waitForChannel() into state machineAndrey Kleshchev
2021-10-13SL-15462 Refactor voiceControlCoro() into a state machine #2Andrey Kleshchev
2021-10-13SL-15462 Refactor voiceControlCoro() into a state machine #1Andrey Kleshchev
2021-08-13SL-15292 waitForChannel crashAndrey Kleshchev
This code needs to be turned into a state machine (switch-case between states) with clean exit and each state clean and separate. Right now it passes through all stages on exit and relies onto multiple bools instead of just transitioning to 'exit' state. In some cases coroutine still lives longer than voice singletone, it also needs to be adressed.
2021-07-20Merge branch 'master' into DRTVWR-521-maintAndrey Lihatskiy
# Conflicts: # autobuild.xml # indra/llcommon/llerror.cpp # indra/llui/llnotifications.h # indra/newview/llappviewer.cpp # indra/newview/llappviewermacosx.cpp
2021-06-25Merge branch 'master' into DRTVWR-521-maintAndrey Lihatskiy
2021-06-23SL-15292 waitForChannel crash #4Andrey Kleshchev
2021-06-23SL-15292 waitForChannel crash #3Andrey Kleshchev
2021-06-23SL-15292 waitForChannel crash #2Andrey Kleshchev
2021-06-10Fix for SL-15381 Import Vivox VAD voice fixes into 'Viewer UI changes' branchCallum Prentice
2021-06-07SL-15351 'Speak' button remains active on the parcel with disabled voiceAndrey Kleshchev
2021-06-07Merge branch 'master' into DRTVWR-521-maintAndrey Lihatskiy
# Conflicts: # doc/contributions.txt
2021-06-07Merge branch 'master' into DRTVWR-516-maintAndrey Lihatskiy
2021-06-03SL-15292 waitForChannel crashAndrey Kleshchev
2021-05-26SL-15292 waitForChannel crash #2Andrey Kleshchev
2021-05-25SL-15292 waitForChannel crashAndrey Kleshchev
2021-04-29Expose the flag to turn automatic VAD on and off. We will likely keep it ↵Callum Prentice
off since that appears to be working well for us but others may want to turn in on
2021-04-29Merge remote-tracking branch 'origin/master' into DRTVWR-533Callum Prentice
2021-04-29Merge master into DV525-merge-6.4.19Dave Houlton
2021-04-21SL-15072 update. Values for VAD settings now stored in debug settings. ↵Callum Prentice
Request successfully sent at startup and also, whenever a relevant debug setting is changed. Going to send this build to Brett to test
2021-04-20Move location where we call function to setup VAD but didn't helpCallum Prentice
2021-04-20SL-15072: First part of adding ability to disable the VIVOX auto VAD feature ↵Callum Prentice
and set our own values via Debug Settings - hardcoded currently for testing but will be pulled from global settings eventually
2020-12-01SL-13733 One more vivox shutdown crash #2Andrey Kleshchev
2020-11-25SL-13733 One more vivox shutdown crashAndrey Kleshchev
Vivox was using dead pump
2020-11-11Merge branch 'master' 6.4.12 into DRTVWR-510Dave Houlton
2020-10-12SL-13830 One more crash when quiting on startup or right after teleportAndrey Kleshchev
2020-10-08DRTVWR-510 remove all LL_SOLARIS conditionalsDave Houlton
2020-09-22follow-up build fixAndrey Lihatskiy
2020-09-22Merge branch 'master' into DRTVWR-507-maintAndrey Lihatskiy
# Conflicts: # doc/contributions.txt # indra/newview/llfloaterconversationpreview.cpp # indra/newview/llinventorypanel.h # indra/newview/llmeshrepository.h # indra/newview/llvoicevivox.cpp
2020-09-11SL-13830 Remade vivox shutdown to terminate when it is told to shutdown ↵Andrey Kleshchev
instead of when viewer is quiting
2020-09-11SL-13830 Don't crash if quiting during startupAndrey Kleshchev
2020-09-01SL-13830 Don't crash if quiting during startupAndrey Kleshchev
2020-08-28SL-13555 'Second Life quit unexpectedly' error messageAndrey Kleshchev
2020-08-22SL-13830 One more coroutine crashAndrey Kleshchev
2020-05-27DRTVWR-476, VOICE-88, SL-13025: Use a new port every SLVoice launch.Nat Goodspeed
The observed failure is that SLVoice, on relaunch, produces an error that bind() returned EADDRINUSE and terminates. Using a different port every time we relaunch avoids that collision.
2020-05-27DRTVWR-476: Make LLVivoxVoiceClient::logoutOfVivox() wait for logout.Nat Goodspeed
It can happen that we arrive at logoutOfVivox() with some other message queued on the LLEventMailDrop in question. If logoutOfVivox() assumes that other message is logout and exits, then subsequent code gets confused. Introduce a loop to wait (with the existing timeout) for the real logout message.
2020-05-06DRTVWR-476: Merge branch 'master' of lindenlab/viewer into DRTVWR-476-boost-1.72Nat Goodspeed
2020-03-25DRTVWR-476: Keep coroutine-local data on toplevel()'s stack frame.Nat Goodspeed
Instead of heap-allocating a CoroData instance per coroutine, storing the pointer in a ptr_map and deleting it from the ptr_map once the fiber_specific_ptr for that coroutine is cleaned up -- just declare a stack instance on the top-level stack frame, the simplest C++ lifespan management. Derive CoroData from LLInstanceTracker to detect potential name collisions and to enumerate instances. Continue registering each coroutine's CoroData instance in our fiber_specific_ptr, but use a no-op deleter function. Make ~LLCoros() directly pump the fiber scheduler a few times, instead of having a special "LLApp" listener.
2020-03-25DRTVWR-476: Introduce LLEventMailDrop::discard() (instead of flush()).Nat Goodspeed
Overriding virtual LLEventPump::flush() for the semantic of discarding LLEventMailDrop's queued events turns out not to be such a great idea, because LLEventPumps::flush(), which calls every registered LLEventPump's flush() method, is called every mainloop tick. The first time we hit a use case in which we expected LLEventMailDrop to hold queued events across a mainloop tick, we were baffled that they were never delivered. Moving that logic to a separate method specific to LLEventMailDrop resolves that problem. Naming it discard() clarifies its intended functionality.
2020-03-25DRTVWR-476: Directly reference LLVivoxVoiceClient::mVivoxPump.Nat Goodspeed
The LLEventMailDrop used to communicate with the Vivox coroutine is a member of LLVivoxVoiceClient. We don't need to keep looking it up by its string name in LLEventPumps.
2020-03-25SL-11216: Convert LLVersionInfo to an LLSingleton.Nat Goodspeed
This changeset is meant to exemplify how to convert a "namespace" class whose methods are static -- and whose data are module-static -- to an LLSingleton. LLVersionInfo has no initClass() or cleanupClass() methods, but the general idea is the same. * Derive the class from LLSingleton<T>: class LLSomeSingleton: public LLSingleton<LLSomeSingleton> { ... }; * Add LLSINGLETON(LLSomeSingleton); in the private section of the class. This usage implies a separate LLSomeSingleton::LLSomeSingleton() definition, as described in indra/llcommon/llsingleton.h. * Move module-scope data in the .cpp file to non-static class members. Change any sVariableName to mVariableName to avoid being outright misleading. * Make static class methods non-static. Remove '//static' comments from method definitions as needed. * For LLVersionInfo specifically, the 'const std::string&' return type was replaced with 'std::string'. Returning a reference to a static or a member, const or otherwise, is an anti-pattern: the interface constrains the implementation, prohibiting possibly later returning a temporary (an expression). * For LLVersionInfo specifically, 'const S32' return type was replaced with simple 'S32'. 'const' is just noise in that usage. * Simple member initialization (e.g. the original initializer expressions for static variables) can be done with member{ value } initializers (no examples here though). * Delete initClass() method. * LLSingleton's forté is of course lazy initialization. It might work to simply delete any calls to initClass(). But if there are side effects that must happen at that moment, replace LLSomeSingleton::initClass() with (void)LLSomeSingleton::instance(); * Most initClass() initialization can be done in the constructor, as would normally be the case. * Initialization that might cause a circular LLSingleton reference should be moved to initSingleton(). Override 'void initSingleton();' should be private. * For LLVersionInfo specifically, certain initialization that used to be lazily performed was made unconditional, due to its low cost. * For LLVersionInfo specifically, certain initialization involved calling methods that have become non-static. This was moved to initSingleton() because, in a constructor body, 'this' does not yet point to the enclosing class. * Delete cleanupClass() method. * There is already a generic LLSingletonBase::deleteAll() call in LLAppViewer::cleanup(). It might work to let this new LLSingleton be cleaned up with all the rest. But if there are side effects that must happen at that moment, replace LLSomeSingleton::cleanupClass() with LLSomeSingleton::deleteSingleton(). That said, much of the benefit of converting to LLSingleton is deleteAll()'s guarantee that cross-LLSingleton dependencies will be properly honored: we're trying to migrate the code base away from the present fragile manual cleanup sequence. * Most cleanupClass() cleanup can be done in the destructor, as would normally be the case. * Cleanup that might throw an exception should be moved to cleanupSingleton(). Override 'void cleanupSingleton();' should be private. * Within LLSomeSingleton methods, remove any existing LLSomeSingleton::methodName() qualification: simple methodName() is better. * In the rest of the code base, convert most LLSomeSingleton::methodName() references to LLSomeSingleton::instance().methodName(). (Prefer instance() to getInstance() because a reference does not admit the possibility of NULL.) * Of course, LLSomeSingleton::ENUM_VALUE can remain unchanged. In general, for many successive references to an LLSingleton instance, it can be useful to capture the instance() as in: auto& versionInfo{LLVersionInfo::instance()}; // ... versionInfo.getVersion() ... We did not do that here only to simplify the code review. The STRINGIZE(expression) macro encapsulates: std::ostringstream out; out << expression; return out.str(); We used that in a couple places. For LLVersionInfo specifically, lllogininstance_test.cpp used to dummy out a couple specific static methods. It's harder to dummy out LLSingleton::instance() references, so we add the real class to that test.
2019-10-29Downstream merge from lindenlab/viewer-lynxAndreyL ProductEngine
2019-10-21SL-12161 FIXED Disabling voice while a call is active leaves the Speak ↵Mnikolenko Productengine
button enabled.
2019-10-04rename SLVoice log file and rotate the way we do for SecondLife.logOz Linden
2019-05-21Merged in lindenlab/viewer-bearAndreyL ProductEngine
2019-03-08SL-10702: When attempting a new voice connection, ensure that the voicePump ↵Rider Linden
mail drop does not have any outstanding events.
2018-12-16DRTVWR-447: Merge up to latest viewer-releaseNat Goodspeed
2018-10-30SL-9955 FIXED crash-on-exit in LLVivoxVoiceClient::removeObserverMnikolenko ProductEngine
2018-09-26Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2018-09-13DRTVWR-474: Clean up use of LLDir::getAppRODataDir(), esp. on Mac.Nat Goodspeed
Clearly it's not obvious to maintainers that on the Mac, getAppRODataDir() returns the app's Resources directory: in a number of places the code starts with the executable directory and appends "../Resources" to find that.