It's a little distressing how often we have historically coded S32 or U32 to
pass a length or index.
There are more such assumptions in other viewer subdirectories, but this is a
start.
various fixes to lltrace
start() on started recording no longer resets
fixed various instances of unit forgetfullness in lltrace
recording split now has gapless timing
scene monitor now guarantees min sample time
renamed a bunch of stats
added names to debug thread view on windows
removed LLThreadLocalSingleton
collapsed all thread recorder classes to single type, LLTrace::ThreadRecorder
moved fasttimer stack head to llthreadlocalsingletonpointer via ThreadRecorder
fixed some lltrace logic errors
more consistent syncing of timestamps of sample values in recording stack
selection of primary buffers was completely incorrect
assignment of recordings got wrong play state due to implicit
operator = defined in base class
fixed asset stats only working up to the first send
reverted SlaveThreadRecorder update gating
moved processTimes() outside of Recording, so it is called only once per frame
refined sample merge logic so that multi-threaded samples do not stomp on linear history
of a stat
fixed LLTrace::ExtendablePeriodicRecording::extend() to include *all* frame extensions
gated SlaveThreadRecorder pushing to master based on master update rate
reverted changes to LLThreadLocalSingletonPointer to not use offset-from-default trick
fixed copy construction behavior of Recordings to not zero out data
split measurement into event and sample, with sample representing
a continuous function
removed extra dereference for copy on write pointer
moved copyonwrite mechanism to RecordingBuffers from individual buffer
fixed logic that was leaving scene unfrozen when camera moved during metrics gathering
made fast timer stack thread local
added LLThreadLocalSingleton
made LLThreadLocalPointer obey pointer rules for const
added LLThreadLocalSingletonPointer for fast thread local pointers
improvements on lifetime of lltrace core data structures
tweaks to thread local pointer handling so that static constructors/destructors
can safely call functions that use lltrace
fixed trace data gathering and routing from background thread
simplified slave->master thread communication (eliminated redundant recording and proxy object)
improved performance of fast timer data gathering (slow iterators)
cleaned up accumulator merging logic
introduced frame recording to LLTrace directly instead of going through LLViewerStats
moved consumer code over to frame recording instead of whatever the current active recording was
moved threadrecorder classes into separate file
added Count trace type, which tracks value increases and decreases and can report churn
as well as overall growth rate