summaryrefslogtreecommitdiff
path: root/indra/llcommon
AgeCommit message (Collapse)Author
2017-05-22mergeBrad Payne (Vir Linden)
2017-05-18Linux buildfix; this should be reverted after gcc update to 4.7+AndreyL ProductEngine
2017-05-10Add size limit to LLEventBatchThrottle like LLEventBatch.Nat Goodspeed
The new behavior is that it will flush when either the pending batch has grown to the specified size, or the time interval has expired.
2017-05-10Automated merge with ssh://bitbucket.org/lindenlab/viewer-nekoNat Goodspeed
2017-05-10Add LLEventThrottle tests; actually *all* lleventfilter.cpp tests.Nat Goodspeed
For some reason there wasn't an entry in indra/llcommon/CMakeLists.txt to run the tests in indra/llcommon/tests/lleventfilter_test.cpp. It seems likely that at some point it existed, since all previous tests built and ran successfully. In any case, (re-)add lleventfilter_test.cpp to the set of llcommon tests. Also alphabetize them to make it easier to find a particular test invocation. Also add new tests for LLEventThrottle. To support this, refactor the concrete LLEventThrottle class into LLEventThrottleBase containing all the tricky logic, with pure virtual methods for access to LLTimer and LLEventTimeout, and an LLEventThrottle subclass containing the LLTimer and LLEventTimeout instances and corresponding implementations of the new pure virtual methods. That permits us to introduce TestEventThrottle, an alternate subclass with dummy implementations of the methods related to LLTimer and LLEventTimeout. In particular, we can explicitly advance simulated realtime to simulate particular LLTimer and LLEventTimeout behaviors. Finally, introduce Concat, a test LLEventPump listener class whose function is to concatenate received string event data into a composite string so we can readily test for particular sequences of events.
2017-04-26MAINT-7343 - added periodic logging of state of the asset store.Brad Payne (Vir Linden)
2017-04-25MAINT-7145 Eliminate LLSingleton circular referencesandreykproductengine
2017-04-07MAINT-6283 Names that contain 'http:' or 'https:' were causing new line in ↵andreykproductengine
chat history
2017-04-03MAINT-6404 FIXED When pasting text with mac linebreak into a notecard, it ↵mnikolenko
shouldn't be removed
2017-03-24MAINT-6789: Add LLEventThrottle::getInterval(), setInterval()Nat Goodspeed
plus LLEventBatch::getSize(), setSize() plus LLEventThrottle::getPostCount() and getDelay(). The interesting thing about LLEventThrottle::setInterval() and LLEventBatch::setSize() is that either might cause an immediate flush().
2017-03-23MAINT-6789: Add LLEventBatch, LLEventThrottle, LLEventBatchThrottle.Nat Goodspeed
These classes are as yet untested: they are straw people for API review, based on email conversations with Caladbolg and Rider.
2017-03-20MAINT-7195 work (can't repro), removed UDP fetching path, handle more ↵Brad Payne (Vir Linden)
possible timing issues while connecting to region
2017-03-03SL-409 - added tracking for bytes fetched to viewer assets metrics (does not ↵Brad Payne (Vir Linden)
currently work for textures)
2017-02-14SL-409 - debug setting to enable/disable use of ViewerAsset cap by asset ↵Brad Payne (Vir Linden)
type. Temporary construction until UDP path goes away.
2016-12-05Merged in lindenlab/viewer-releaseAndreyL ProductEngine
DRTVWR-412 Bento (avatar skeleton extensions)
2016-11-16mergeBrad Payne (Vir Linden)
2016-11-14Merged in lindenlab/viewer-cleanupAndreyL ProductEngine
2016-10-28MAINT-6825 Fixing bad_alloc crashandreykproductengine
2016-10-18mergeBrad Payne (Vir Linden)
2016-10-13MAINT-6828 Removed unnessesary spam in logsandreykproductengine
2016-10-15Merged in lindenlab/viewer-bearAndreyL ProductEngine
2016-10-13MAINT-5232: Ensure custom operator<<() overload is visible to TUT.Nat Goodspeed
2016-10-12MAINT-5232: Add LLHeteroMap to contain objects of unrelated classes.Nat Goodspeed
2016-10-11merge maint-6633 to fork of viewer-bearGlenn Glazer
2016-10-11maint-6633: remove commented out codeGlenn Glazer
2016-10-11maint-6633: space, the final frontierGlenn Glazer
2016-10-11maint-6633: space after colonGlenn Glazer
2016-10-11maint-6633: yet more futzing with spacesGlenn Glazer
2016-10-11MAINT-5232: Merge up to VLC viewer from viewer-releaseNat Goodspeed
2016-10-10maint-6633: more futzing with spacesGlenn Glazer
2016-10-10maint-6633: fix spacing after level:Glenn Glazer
2016-10-11Merged in lindenlab/viewer-bearAndreyL ProductEngine
2016-10-10maint-6633: fix spacingGlenn Glazer
2016-10-10maint-6633: move INFO aroundGlenn Glazer
2016-10-10maint-6633: fix tyopGlenn Glazer
2016-10-10Merged in lindenlab/viewer-releaseAndreyL ProductEngine
2016-10-10maint-6633: fix unit test to conform with new desired orderingGlenn Glazer
2016-10-10maint-6633: fix ordering of log entriesGlenn Glazer
2016-09-28SL-451 - SSE-optimized matrix multiply, used in initSkinningMatrixPalette()Brad Payne (Vir Linden)
2016-09-30MAINT-6783 Xml parser warnings should show the file nameMnikolenko Productengine
2016-09-17MAINT-5232: Eliminate pointless string search for "class " prefix.Nat Goodspeed
The Visual C++ runtime produces typeid(MyClass).name() as "class MyClass". It's prudent to check for the presence of that prefix before stripping off the first six characters, but if the first comparison should ever fail, find() would continue searching the rest of the string for "class " -- a search guaranteed to fail. Use compare() instead.
2016-09-16MergeRider Linden
2016-09-15MAINT-5232: Normalize LLSingleton subclasses.Nat Goodspeed
A shocking number of LLSingleton subclasses had public constructors -- and in several instances, were being explicitly instantiated independently of the LLSingleton machinery. This breaks the new LLSingleton dependency-tracking machinery. It seems only fair that if you say you want an LLSingleton, there should only be ONE INSTANCE! Introduce LLSINGLETON() and LLSINGLETON_EMPTY_CTOR() macros. These handle the friend class LLSingleton<whatevah>; and explicitly declare a private nullary constructor. To try to enforce the LLSINGLETON() convention, introduce a new pure virtual LLSingleton method you_must_use_LLSINGLETON_macro() which is, as you might suspect, defined by the macro. If you declare an LLSingleton subclass without using LLSINGLETON() or LLSINGLETON_EMPTY_CTOR() in the class body, you can't instantiate the subclass for lack of a you_must_use_LLSINGLETON_macro() implementation -- which will hopefully remind the coder. Trawl through ALL LLSingleton subclass definitions, sprinkling in LLSINGLETON() or LLSINGLETON_EMPTY_CTOR() as appropriate. Remove all explicit constructor declarations, public or private, along with relevant 'friend class LLSingleton<myself>' declarations. Where destructors are declared, move them into private section as well. Where the constructor was inline but nontrivial, move out of class body. Fix several LLSingleton abuses revealed by making ctors/dtors private: LLGlobalEconomy was both an LLSingleton and the base class for LLRegionEconomy, a non-LLSingleton. (Therefore every LLRegionEconomy instance contained another instance of the LLGlobalEconomy "singleton.") Extract LLBaseEconomy; LLGlobalEconomy is now a trivial subclass of that. LLRegionEconomy, as you might suspect, now derives from LLBaseEconomy. LLToolGrab, an LLSingleton, was also explicitly instantiated by LLToolCompGun's constructor. Extract LLToolGrabBase, explicitly instantiated, with trivial subclass LLToolGrab, the LLSingleton instance. (WARNING: LLToolGrabBase methods have an unnerving tendency to go after LLToolGrab::getInstance(). I DO NOT KNOW what should be the relationship between the instance in LLToolCompGun and the LLToolGrab singleton instance.) LLGridManager declared a variant constructor accepting (const std::string&), with the comment: // initialize with an explicity grid file for testing. As there is no evidence of this being called from anywhere, delete it. LLChicletBar's constructor accepted an optional (const LLSD&). As the LLSD parameter wasn't used, and as there is no evidence of it being passed from anywhere, delete the parameter. LLViewerWindow::shutdownViews() was checking LLNavigationBar:: instanceExists(), then deleting its getInstance() pointer -- leaving a dangling LLSingleton instance pointer, a land mine if any subsequent code should attempt to reference it. Use deleteSingleton() instead. ~LLAppViewer() was calling LLViewerEventRecorder::instance() and then explicitly calling ~LLViewerEventRecorder() on that instance -- leaving the LLSingleton instance pointer pointing to an allocated-but-destroyed instance. Use deleteSingleton() instead.
2016-09-14MergeRider Linden
2016-09-06MAINT-5232: Prevent runaway LLSingletonBase::MasterList growth.Nat Goodspeed
Until we reimplement LLCoros on Boost.Fiber, we must hand-implement coroutine-local data. That presently takes the form of a map keyed on llcoro::id, whose values are the stacks of currently-initializing LLSingleton instances. But since the viewer launches an open-ended number of coroutines, we could end up with an open-ended number of map entries unless we intentionally prune the map. So every time we pop the stack to empty, remove that map entry. This could result in thrashing, a given coroutine's 'initializing' stack being created and deleted for almost every LLSingleton instantiated by that coroutine -- but the number of different LLSingletons is necessarily static, and the lifespan of each is the entire rest of the process. Even a couple dozen LLSingletons won't thrash that badly.
2016-09-06MAINT-5232: Make LLSingleton's 'initializing' stack coro-specific.Nat Goodspeed
The stack we maintain of which LLSingletons are currently initializing only makes sense when associated with a particular C++ call stack. But each coroutine introduces another C++ call stack! Move the initializing stack from function-static storage to LLSingletonBase::MasterList. Make it a map keyed by llcoro::id. Each coro then has a stack of its own. This introduces more dependencies on the MasterList singleton, requiring additional LLSingleton_manage_master workarounds.
2016-09-06Automated merge with ssh://bitbucket.org/lindenlab/viewer-vlcNat Goodspeed
2016-09-06MAINT-5011: Ensure BlockTimer::mStartTime is unconditionally set.Nat Goodspeed
Previous logic could possibly leave mStartTime uninitialized, producing fatal warnings with gcc 4.7.
2016-09-06MAINT-5232: Ensure that llcoro::get_id() returns distinct values.Nat Goodspeed
Until now, the "main coroutine" (the initial context) of each thread left LLCoros::Current() NULL. The trouble with that is that llcoro::get_id() returns that CoroData* as an opaque token, and we want distinct values for every stack in the process. That would not be true if the "main coroutine" on thread A returned the same value (NULL) as the "main coroutine" on thread B, and so forth. Give each thread's "main coroutine" a dummy heap CoroData instance of its own.
2016-09-06merge changes for exception handlingOz Linden