<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/llcommon/llinstancetracker.h, 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-08-13T21:28:19Z</updated>
<entry>
<title>Introduce tracy instrumentation of mutex in LLSingleton, LLInstanceTracker and logging</title>
<updated>2024-08-13T21:28:19Z</updated>
<author>
<name>Rye Mutt</name>
<email>rye@alchemyviewer.org</email>
</author>
<published>2024-08-13T21:26:19Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=70f455347eafa802036cf4a90d903d139a0fd7e9'/>
<id>urn:sha1:70f455347eafa802036cf4a90d903d139a0fd7e9</id>
<content type='text'>
</content>
</entry>
<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>Merge remote-tracking branch 'origin/main' into DRTVWR-559</title>
<updated>2023-05-17T18:17:48Z</updated>
<author>
<name>Brad Linden</name>
<email>brad@lindenlab.com</email>
</author>
<published>2023-05-17T18:17:48Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=2f44377b3e98d60f1bd5b1a495c9a3aab9cfa450'/>
<id>urn:sha1:2f44377b3e98d60f1bd5b1a495c9a3aab9cfa450</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-559: Introduce LLInstanceTrackerSubclass mediator class.</title>
<updated>2022-12-09T18:16:39Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2022-12-09T18:16:39Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=00478b1e7671cb109771a1ad4fb40d47d15ab756'/>
<id>urn:sha1:00478b1e7671cb109771a1ad4fb40d47d15ab756</id>
<content type='text'>
Deriving your tracked class T from LLInstanceTracker&lt;T&gt; gives you
T::getInstance() et al. But what about a subclass S derived from T?
S::getInstance() still delivers a pointer to T, requiring explicit downcast.
And so on for other LLInstanceTracker methods.

Instead, derive S from LLInstanceTrackerSubclass&lt;S, T&gt;. This implies that S is
a grandchild class of T, but it also recasts the LLInstanceTracker methods to
deliver results for S rather than for T.
</content>
</entry>
<entry>
<title>DRTVWR-575: Fix llcommon assumptions that size_t fits in 4 bytes.</title>
<updated>2022-11-03T18:58:32Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2022-11-03T18:58:32Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=9522a0b7c16414fce2103cf58bfdd63aaf0cb01b'/>
<id>urn:sha1:9522a0b7c16414fce2103cf58bfdd63aaf0cb01b</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>SL-16024: Return shared_ptr from LLInstanceTracker::getInstance().</title>
<updated>2021-10-07T15:53:45Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2021-10-07T15:53:45Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=2cb09dd4a828756dce6180505c63851aa9875187'/>
<id>urn:sha1:2cb09dd4a828756dce6180505c63851aa9875187</id>
<content type='text'>
It feels wrong to return a dumb LLInstanceTracker subclass* from getInstance()
when we use std::shared_ptr and std::weak_ptr internally. But tweak consumers
to use 'auto' or LLInstanceTracker::ptr_t in case we later revisit this
decision.

We did add a couple get() calls where it's important to obtain a dumb pointer.
</content>
</entry>
<entry>
<title>DRTVWR-476: Adapt LLInstanceTracker::snapshot for VS limitations.</title>
<updated>2020-03-25T23:24:25Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-12-11T20:41:01Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=557a74fbddac609ce238a7bbafc3138b95956575'/>
<id>urn:sha1:557a74fbddac609ce238a7bbafc3138b95956575</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-494: Move LL_ERRS out of llinstancetracker.h header file.</title>
<updated>2020-03-25T19:28:17Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-12-06T20:04:11Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=2506fd78824d92e512931d4bc2ff5cef4fc8c9c6'/>
<id>urn:sha1:2506fd78824d92e512931d4bc2ff5cef4fc8c9c6</id>
<content type='text'>
Add a namespaced free function in .cpp file to report LL_ERRS as needed.

Per code review, use a more indicative namespace name.
</content>
</entry>
<entry>
<title>DRTVWR-494: Extract LockStatic as a standalone template class.</title>
<updated>2020-03-25T19:28:17Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-12-04T01:44:26Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=1f7335fde34abdb9889e0c7b437fc02870570fcf'/>
<id>urn:sha1:1f7335fde34abdb9889e0c7b437fc02870570fcf</id>
<content type='text'>
The pattern of requiring a lock to permit *any* access to a static instance of
something seems generally useful. Break out lockstatic.h; recast
LLInstanceTracker to use it.

Moving LockStatic to an external template class instead of a nested class in
LLInstanceTrackerBase leaves LLInstanceTrackerBase pretty empty. Get rid of it.

And *that* means we can move the definition of the StaticData used by each
LLInstanceTracker specialization into the class itself, rather than having to
define it beforehand in namespace LLInstanceTrackerStuff.
</content>
</entry>
<entry>
<title>DRTVWR-494: Encapsulate redundant VS boilerplate around &lt;mutex&gt;.</title>
<updated>2020-03-25T19:28:17Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-12-03T16:45:14Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=b080b06b422db6405982bee603118ee68e6c2500'/>
<id>urn:sha1:b080b06b422db6405982bee603118ee68e6c2500</id>
<content type='text'>
</content>
</entry>
</feed>
