<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/newview/lltexturestats.cpp, branch cef_147</title>
<subtitle>Megapahit's fork of the Second Life viewer.
</subtitle>
<id>https://megapahit.org/viewer.git/atom?h=cef_147</id>
<link rel='self' href='https://megapahit.org/viewer.git/atom?h=cef_147'/>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/'/>
<updated>2024-04-29T04:56:09Z</updated>
<entry>
<title>#824 Process source files in bulk: replace tabs with spaces, convert CRLF to LF, and trim trailing whitespaces as needed</title>
<updated>2024-04-29T04:56:09Z</updated>
<author>
<name>Andrey Lihatskiy</name>
<email>alihatskiy@productengine.com</email>
</author>
<published>2024-04-29T04:43:28Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=1b68f71348ecf3983b76b40d7940da8377f049b7'/>
<id>urn:sha1:1b68f71348ecf3983b76b40d7940da8377f049b7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>SL-11216: Convert LLVersionInfo to an LLSingleton.</title>
<updated>2020-03-25T20:01:31Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-05-30T14:39:37Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=5a260e0cc3beec45da1d29578855524977206022'/>
<id>urn:sha1:5a260e0cc3beec45da1d29578855524977206022</id>
<content type='text'>
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&lt;T&gt;:
  class LLSomeSingleton: public LLSingleton&lt;LLSomeSingleton&gt; { ... };
* 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&amp;' 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&amp; 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 &lt;&lt; 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.
</content>
</entry>
<entry>
<title>SL-683 Instrument viewer cache</title>
<updated>2017-08-17T12:32:01Z</updated>
<author>
<name>andreykproductengine</name>
<email>andreykproductengine@lindenlab.com</email>
</author>
<published>2017-08-17T12:32:01Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=cbd4c0196fc32f94c6f9a41d161b65f4609985d4'/>
<id>urn:sha1:cbd4c0196fc32f94c6f9a41d161b65f4609985d4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>merge with 4.0.3-release</title>
<updated>2016-04-04T19:53:09Z</updated>
<author>
<name>Oz Linden</name>
<email>oz@lindenlab.com</email>
</author>
<published>2016-04-04T19:53:09Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=9be58e915a6c69de280ccabd3019e9ac40beed26'/>
<id>urn:sha1:9be58e915a6c69de280ccabd3019e9ac40beed26</id>
<content type='text'>
</content>
</entry>
<entry>
<title>remove execute permission from many files that should not have it</title>
<updated>2015-11-10T14:48:56Z</updated>
<author>
<name>Oz Linden</name>
<email>oz@lindenlab.com</email>
</author>
<published>2015-11-10T14:48:56Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=c8726aba303bcf1207b730a344536e25491420bc'/>
<id>urn:sha1:c8726aba303bcf1207b730a344536e25491420bc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>MAINT-5575: Finished converting experience cache to singleton</title>
<updated>2015-09-10T23:48:01Z</updated>
<author>
<name>Rider Linden</name>
<email>rider@lindenlab.com</email>
</author>
<published>2015-09-10T23:48:01Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=6a204b1bddc711b768d598c6ac0a16413f48d3c3'/>
<id>urn:sha1:6a204b1bddc711b768d598c6ac0a16413f48d3c3</id>
<content type='text'>
MAINT-4952: Coverted VMM to coroutines
</content>
</entry>
<entry>
<title>second phase summer cleaning</title>
<updated>2013-08-10T00:11:19Z</updated>
<author>
<name>Richard Linden</name>
<email>none@none</email>
</author>
<published>2013-08-10T00:11:19Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=e340009fc59d59e59b2e8d903a884acb76b178eb'/>
<id>urn:sha1:e340009fc59d59e59b2e8d903a884acb76b178eb</id>
<content type='text'>
replace llinfos, lldebugs, etc with new LL_INFOS(), LL_DEBUGS(), etc.
</content>
</entry>
<entry>
<title>SH-4299 FIX Interesting: High fps shown temporarily off scale in statistics console</title>
<updated>2013-06-29T03:45:20Z</updated>
<author>
<name>Richard Linden</name>
<email>none@none</email>
</author>
<published>2013-06-29T03:45:20Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=ffa7123bb5187e1da491a8f475d696053d9c9ee4'/>
<id>urn:sha1:ffa7123bb5187e1da491a8f475d696053d9c9ee4</id>
<content type='text'>
added ability to force uniqueness of LLCopyOnWritePointer
converted more variables to units
added convenience function for unit constants
</content>
</entry>
<entry>
<title>Update Mac and Windows breakpad builds to latest</title>
<updated>2013-03-29T14:50:08Z</updated>
<author>
<name>Graham Madarasz</name>
<email>graham@lindenlab.com</email>
</author>
<published>2013-03-29T14:50:08Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=bf6182daa8b4d7cea79310547f71d7a3155e17b0'/>
<id>urn:sha1:bf6182daa8b4d7cea79310547f71d7a3155e17b0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Cleanup of headless client (was: DisableRendering mode)</title>
<updated>2011-02-18T23:16:38Z</updated>
<author>
<name>Don Kjer</name>
<email>don@lindenlab.com</email>
</author>
<published>2011-02-18T23:16:38Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=774405e92bec6bdfa9e2be28e04b4b47fd71615e'/>
<id>urn:sha1:774405e92bec6bdfa9e2be28e04b4b47fd71615e</id>
<content type='text'>
* Now called 'HeadlessClient' instead of 'DisableRendering'
* Removed most cases where we skipped certain behaviors in the client when in this mode.  This gets us closer to a 'true' client, for testing purposes.
</content>
</entry>
</feed>
