Age | Commit message (Collapse) | Author |
|
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.
|
|
|
|
|
|
continued conversion to units system
made units perform type promotion correctly and preserve type in arithmetic
e.g. can now do LLVector3 in units
added typedefs for remaining common unit types, including implicits
|
|
|
|
added convenience types for units F32Seconds, etc.
|
|
moved object cache sampling code so that it actually gets executed
default values for stats are NaN instead of 0 in many cases
|
|
consolidated most indra-specific constants in llcommon under indra_constants.h
fixed issues with operations on mixed unit types (implicit and explicit)
made LL_INFOS() style macros variadic in order to subsume other logging methods
such as ll_infos
added optional tag output to error recorders
|
|
dependency cleanup - removed a lot of unecessary includes
|
|
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
|
|
console
added percentage/ratio units
added auto-range and auto tick calculation to stat bar to automate display stats
|
|
removed LLTrace unit typedefs
|
|
changed Units macros and argument order to make it more clear
optimized units for integer types
fixed merging of periodicrecordings...should eliminate duplicate entries in sceneloadmonitor history
|
|
|
|
fixed mem stat tracking...now properly tracks memory footprint with floating point
precision
cleaned up macros for unit declaration
renamed units to SI standard for 1024 multiples (kibibytes, etc)
fixed units output for scene monitor dump
|
|
made recordings auto-update when executing query while active
|
|
|
|
fixed copy construction behavior of Recordings to not zero out data
split measurement into event and sample, with sample representing
a continuous function
|
|
|
|
|
|
|
|
changed LLCriticalDamp to LLSmoothInterpolation and sped up interpolator lookup
improvements to stats display of llstatbar
added scene load stats floater accessed with ctrl|shift|2
|
|
|
|
|
|
|
|
|
|
LLTrace clearer
Count becomes CountStatHandle
Count.sum becomes sum(Count, value), etc.
|
|
|
|
|
|
|
|
Most of the merge was clean, a couple conflicts.
Brought over a couple patches manually for llpolymesh.
|
|
further compile error fixes
|
|
|
|
Finished making LLUnit implicitly convertible to/from scalar integer values
cleaned up test code
|
|
final removal of remaining LLStat code
|
|
finished most of conversion of llviewerassetstats
ported some param block fixes from viewer-chui
converted viewer asset stats to param block format
|
|
fixed trace recording on background threads hitting null pointer
|
|
started conversion of llviewerassetstats
removed old, dead LLViewerStats code
made units tracing require units declaration
clean up of units handling
|
|
put template parameter back in LLUnit units
added free function operators for mathematical manipulation of unit values
converted texture memory tracking to units
|
|
converted all remaining LLViewerStats to lltrace
|
|
default to double precision now
fixed unit conversion logic for LLUnit
renamed LLTrace::Rate to LLTrace::Count and got rid of the old count as it was confusing
some const correctness changes
|
|
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
|
|
fixed units conversion so that trace getters return convertable units
removed circular dependencies from lltrace*
converted more stats to lltrace
|
|
SH-3403 FIX implement unit conversion
LLUnit implements unit tracking and conversion
added support for LLUnit to LLTrace
duplicated most llstats into LLTrace equivalents
|
|
renamed LLTrace::ThreadTrace to LLTrace::ThreadRecorder
renamed LLTrace::Sampler to LLTrace::Recording
|
|
cleaned up API
samplers are now value types with copy-on-write buffers under the hood
removed coupling with LLThread
|
|
factored out lltrace::sampler into separate file
added rudimentary lltrace support to llstatgraph
made llstatgraph use param blocks more effectively
moves initial set of stats over to lltrace
removed windows.h #defines for min and max
|
|
|
|
further cleanup of LLStat
removed llfloaterlagmeter
|
|
|