summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerstats.cpp
AgeCommit message (Collapse)Author
2020-03-25SL-11216: Convert LLVersionInfo to an LLSingleton.Nat Goodspeed
This changeset is meant to exemplify how to convert a "namespace" class whose methods are static -- and whose data are module-static -- to an LLSingleton. LLVersionInfo has no initClass() or cleanupClass() methods, but the general idea is the same. * Derive the class from LLSingleton<T>: class LLSomeSingleton: public LLSingleton<LLSomeSingleton> { ... }; * Add LLSINGLETON(LLSomeSingleton); in the private section of the class. This usage implies a separate LLSomeSingleton::LLSomeSingleton() definition, as described in indra/llcommon/llsingleton.h. * Move module-scope data in the .cpp file to non-static class members. Change any sVariableName to mVariableName to avoid being outright misleading. * Make static class methods non-static. Remove '//static' comments from method definitions as needed. * For LLVersionInfo specifically, the 'const std::string&' return type was replaced with 'std::string'. Returning a reference to a static or a member, const or otherwise, is an anti-pattern: the interface constrains the implementation, prohibiting possibly later returning a temporary (an expression). * For LLVersionInfo specifically, 'const S32' return type was replaced with simple 'S32'. 'const' is just noise in that usage. * Simple member initialization (e.g. the original initializer expressions for static variables) can be done with member{ value } initializers (no examples here though). * Delete initClass() method. * LLSingleton's forté is of course lazy initialization. It might work to simply delete any calls to initClass(). But if there are side effects that must happen at that moment, replace LLSomeSingleton::initClass() with (void)LLSomeSingleton::instance(); * Most initClass() initialization can be done in the constructor, as would normally be the case. * Initialization that might cause a circular LLSingleton reference should be moved to initSingleton(). Override 'void initSingleton();' should be private. * For LLVersionInfo specifically, certain initialization that used to be lazily performed was made unconditional, due to its low cost. * For LLVersionInfo specifically, certain initialization involved calling methods that have become non-static. This was moved to initSingleton() because, in a constructor body, 'this' does not yet point to the enclosing class. * Delete cleanupClass() method. * There is already a generic LLSingletonBase::deleteAll() call in LLAppViewer::cleanup(). It might work to let this new LLSingleton be cleaned up with all the rest. But if there are side effects that must happen at that moment, replace LLSomeSingleton::cleanupClass() with LLSomeSingleton::deleteSingleton(). That said, much of the benefit of converting to LLSingleton is deleteAll()'s guarantee that cross-LLSingleton dependencies will be properly honored: we're trying to migrate the code base away from the present fragile manual cleanup sequence. * Most cleanupClass() cleanup can be done in the destructor, as would normally be the case. * Cleanup that might throw an exception should be moved to cleanupSingleton(). Override 'void cleanupSingleton();' should be private. * Within LLSomeSingleton methods, remove any existing LLSomeSingleton::methodName() qualification: simple methodName() is better. * In the rest of the code base, convert most LLSomeSingleton::methodName() references to LLSomeSingleton::instance().methodName(). (Prefer instance() to getInstance() because a reference does not admit the possibility of NULL.) * Of course, LLSomeSingleton::ENUM_VALUE can remain unchanged. In general, for many successive references to an LLSingleton instance, it can be useful to capture the instance() as in: auto& versionInfo{LLVersionInfo::instance()}; // ... versionInfo.getVersion() ... We did not do that here only to simplify the code review. The STRINGIZE(expression) macro encapsulates: std::ostringstream out; out << expression; return out.str(); We used that in a couple places. For LLVersionInfo specifically, lllogininstance_test.cpp used to dummy out a couple specific static methods. It's harder to dummy out LLSingleton::instance() references, so we add the real class to that test.
2019-09-06SL-11883 FIXED Crash: SecondLifeViewer!update_statisticsmaxim_productengine
2018-01-17merge 5.1.0-releaseOz Linden
2017-11-29DRTVWR-418: Merge from latest viewer-releaseNat Goodspeed
2017-11-29merge changes for 5.0.9-releaseOz Linden
2017-11-07MAINT-7966 Second Life viewer logs session ID in SecondLife.logMnikolenko Productengine
2017-10-11Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2017-10-11merge changes for 5.0.8-releaseOz Linden
2017-08-25MAINT-7739 Make LLOSInfo a Singletonandreykproductengine
2017-06-27MAINT-7554 Frame throttlingandreykproductengine
2017-05-04Automated merge with ssh://bitbucket.org/lindenlab/viewer64-c-11Nat Goodspeed
2017-04-21DRTVWR-418: Send address_size with login and viewer stats.Nat Goodspeed
2017-03-01VOICE-5: Add voice connection stats to the ViewerStats messageOz Linden
2017-02-23DRTVWR-418: Fix a round of compile errors surfaced by -std=c++11.Nat Goodspeed
These are mostly things that were in fact erroneous, but accepted by older compilers. This changeset has not yet been built with Visual Studio 2013 or Linux gcc, even with -std=c++11. This changeset has not been built *without* -std=c++11. It should be used in conjunction with a corresponding change to LL_BUILD_DARWIN_BASE_SWITCHES in viewer-build-variables/variables. This is a work in progress. We do not assert that this changeset completes the work needed to turn on -std=c++11, even on the Mac.
2016-04-04merge with 4.0.3-releaseOz Linden
2015-11-10remove execute permission from many files that should not have itOz Linden
2015-10-19Merge from viewer release.Rider Linden
2015-05-14Make generic callback version of trivial GET/PUT methods. Make message use ↵Rider Linden
these methods.
2015-05-12Use Coros to post viewer stats.Rider Linden
2015-05-07MAINT-5187 FIXED Add control for local logging of viewer stat packet contentsandreykproductengine
2014-05-14v-r -> s-e merge WIPBrad Payne (Vir Linden)
2014-05-13sunshine-external merge WIPBrad Payne (Vir Linden)
2013-10-17fix for assert at runtime (reading stats from recording while it was active)Richard Linden
fix for bad values returns from getPeriodMin and getPeriodMax on count stats when no counts recorded fix for gcc compile time error (typename ftw)
2013-10-17BUILDFIX: bad typedefRichard Linden
2013-10-07renamed TraceType to StatTypeRichard Linden
added more MemTrackable types optimized memory usage of LLTrace some more
2013-09-13log spam cleanupBrad Payne (Vir Linden)
2013-08-18SH-4433 WIP: Interesting: Statistics > Ping Sim is always 0 msRichard Linden
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
2013-08-16SH-4433 WIP: Interesting: Statistics > Ping Sim is always 0 msRichard Linden
converted many values over to units system in effort to track down source of 0 ping
2013-08-15moved unit types out of LLUnits namespace, since they are prefixedRichard Linden
2013-08-14BUILDFIX: added header for numeric_limits support on gccRichard Linden
added convenience types for units F32Seconds, etc.
2013-08-12Backed out changeset: ed09997b4652Richard Linden
2013-08-12mergeRichard Linden
2013-08-09second phase summer cleaningRichard Linden
replace llinfos, lldebugs, etc with new LL_INFOS(), LL_DEBUGS(), etc.
2013-08-09SH-4374 FIX Interesting: Statistics Object cache hit rate is always 100%Richard Linden
moved object cache sampling code so that it actually gets executed default values for stats are NaN instead of 0 in many cases
2013-08-06revert some LLUnit changes to temporarily fix SH-4399: Interesting: Texture ↵Xiaohong Bao
console MB Bound 0/384 and texture queue bounces once per second
2013-07-31BUILDFIX: bad argument to llformatRichard Linden
2013-07-30Summer cleaning - removed a lot of llcommon dependencies to speed up build timesRichard Linden
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
2013-07-15SH-4299Interesting: High fps shown temporarily off scale in statistics consoleRichard Linden
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
2013-07-08SH-4299 WIP: Interesting: High fps shown temporarily off scale in statistics ↵Richard Linden
console added percentage/ratio units added auto-range and auto tick calculation to stat bar to automate display stats
2013-06-28SH-4299 FIX Interesting: High fps shown temporarily off scale in statistics ↵Richard Linden
console added ability to force uniqueness of LLCopyOnWritePointer converted more variables to units added convenience function for unit constants
2013-06-22SH-3931 WIP Interesting: Add graphs to visualize scene load metricsRichard Linden
removed LLTrace unit typedefs
2013-06-13SH-3931 WIP Interesting: Add graphs to visualize scene load metricsRichard Linden
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
2013-06-05merge with viewer-releaseRichard Linden
2013-06-04SH-3931 WIP Interesting: Add graphs to visualize scene load metricsRichard Linden
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
2013-05-31BUILDFIX - const correctnessRichard Linden
2013-05-31SH-3635 WIPBrad Payne (Vir Linden)
2013-05-29SH-3931 WIP Interesting: Add graphs to visualize scene load metricsRichard Linden
fixed copy construction behavior of Recordings to not zero out data split measurement into event and sample, with sample representing a continuous function
2013-05-21mergeBrad Payne (Vir Linden)
2013-05-20SH-3931 WIP Interesting: Add graphs to visualize scene load metricsRichard Linden
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
2013-05-20SH-3931 WIP Interesting: Add graphs to visualize scene load metricsRichard Linden
killed LLFastTimerView::getTime fixed block time stats always being 0