diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2019-10-24 16:05:37 -0400 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2020-03-25 19:02:24 -0400 | 
| commit | 26c8ccfc06bc9334c9a4d0d027e83ad0b1b92a86 (patch) | |
| tree | 532d7fd58dcadc63068093f8dc624fa3e55381db /indra/llcommon | |
| parent | cbf146f2b3fc255bc83f2b01101dc29658bea6ea (diff) | |
DRTVWR-476: Back out changeset 40c0c6a8407d ("final" LLApp listener)
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/llcoros.cpp | 32 | ||||
| -rw-r--r-- | indra/llcommon/llcoros.h | 3 | ||||
| -rw-r--r-- | indra/llcommon/lleventcoro.cpp | 5 | 
3 files changed, 1 insertions, 39 deletions
| diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp index ea54f1aa92..78a0c5d225 100644 --- a/indra/llcommon/llcoros.cpp +++ b/indra/llcommon/llcoros.cpp @@ -128,38 +128,6 @@ LLCoros::LLCoros():      mStackSize(256*1024)  #endif  { -    // Set up a listener to notice when the viewer is starting to shut down. -    // Store the connection in an LLTempBoundListener so it will automatically -    // disconnect. -    mAppListener = LLEventPumps::instance().obtain("LLApp").listen( -        "final",              // must be the LAST listener on this LLEventPump -        [this](const LLSD& status) -        { -            if (status["status"].asString() == "quitting") -            { -                // Other LLApp status-change listeners do things like close -                // work queues and inject the Stop exception into pending -                // promises, to force coroutines waiting on those things to -                // notice and terminate. The only problem is that by the time -                // LLApp sets "quitting" status, the main loop has stopped -                // pumping the fiber scheduler with yield() calls. A waiting -                // coroutine still might not wake up until after resources on -                // which it depends have been freed. Pump it a few times -                // ourselves. Of course, stop pumping as soon as the last of -                // the coroutines has terminated. -                for (size_t count = 0; count < 10 && ! mCoros.empty(); ++count) -                { -                    // don't use llcoro::suspend() because that module depends -                    // on this one -                    boost::this_fiber::yield(); -                } -            } -            // If we're really the last listener, it shouldn't matter whether -            // we consume this event -- but our being last depends on every -            // other listen() call specifying before "final", which would be -            // all too easy to forget. So do not consume the event. -            return false; -        });  }  LLCoros::~LLCoros() diff --git a/indra/llcommon/llcoros.h b/indra/llcommon/llcoros.h index 171d1ebd2a..de7b691284 100644 --- a/indra/llcommon/llcoros.h +++ b/indra/llcommon/llcoros.h @@ -34,7 +34,6 @@  #include <boost/fiber/future/promise.hpp>  #include <boost/fiber/future/future.hpp>  #include "llsingleton.h" -#include "llevents.h"  #include <boost/ptr_container/ptr_map.hpp>  #include <boost/function.hpp>  #include <string> @@ -285,8 +284,6 @@ private:      typedef boost::ptr_map<std::string, CoroData> CoroMap;      CoroMap mCoros; -    LLTempBoundListener mAppListener; -      // Identify the current coroutine's CoroData. This local_ptr isn't static      // because it's a member of an LLSingleton, and we rely on it being      // cleaned up in proper dependency order. diff --git a/indra/llcommon/lleventcoro.cpp b/indra/llcommon/lleventcoro.cpp index 785c231f2c..967c4d74d8 100644 --- a/indra/llcommon/lleventcoro.cpp +++ b/indra/llcommon/lleventcoro.cpp @@ -153,7 +153,6 @@ postAndSuspendSetup(const std::string& callerName,      // The relative order of the two listen() calls below would only matter if      // "LLApp" were an LLEventMailDrop. But if we ever go there, we'd want to      // notice the pending LLApp status first. -    // Run this listener before the "final" listener.      LLBoundListener stopper(          LLEventPumps::instance().obtain("LLApp").listen(              listenerName, @@ -182,9 +181,7 @@ postAndSuspendSetup(const std::string& callerName,                  }                  // do not consume -- every listener must see status                  return false; -            }, -            LLEventPump::NameList{},            // after -            LLEventPump::NameList{ "final "})); // before +            }));      LLBoundListener connection(          replyPump.listen(              listenerName, | 
