SL-15292 Voice's singleton shutdown before voice's coroutine

master
Andrey Kleshchev 2021-07-19 23:27:00 +03:00
parent 2d855a9fd7
commit a6ea2dbedc
2 changed files with 11 additions and 0 deletions

View File

@ -131,6 +131,13 @@ LLCoros::LLCoros():
LLCoros::~LLCoros()
{
}
void LLCoros::cleanupSingleton()
{
// Some of the coroutines (like voice) will depend onto
// origin singletons, so clean coros before deleting those
printActiveCoroutines("at entry to ~LLCoros()");
// Other LLApp status-change listeners do things like close
// work queues and inject the Stop exception into pending
@ -146,6 +153,8 @@ LLCoros::~LLCoros()
{
// don't use llcoro::suspend() because that module depends
// on this one
// This will yield current(main) thread and will let active
// corutines run once
boost::this_fiber::yield();
}
printActiveCoroutines("after pumping");

View File

@ -89,6 +89,8 @@ class LL_COMMON_API LLCoros: public LLSingleton<LLCoros>
{
LLSINGLETON(LLCoros);
~LLCoros();
void cleanupSingleton();
public:
/// The viewer's use of the term "coroutine" became deeply embedded before
/// the industry term "fiber" emerged to distinguish userland threads from