<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/llcommon/llrefcount.h, branch 26.1.1</title>
<subtitle>Megapahit's fork of the Second Life viewer.
</subtitle>
<id>https://megapahit.org/viewer.git/atom?h=26.1.1</id>
<link rel='self' href='https://megapahit.org/viewer.git/atom?h=26.1.1'/>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/'/>
<updated>2025-11-30T17:22:22Z</updated>
<entry>
<title>Replace boost noncopyable and undefined function usage with modern c++ deleted operator and constructor</title>
<updated>2025-11-30T17:22:22Z</updated>
<author>
<name>Rye</name>
<email>rye@alchemyviewer.org</email>
</author>
<published>2025-11-28T18:49:27Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=afb1f4d692bb593b3f200d490dd3f8fdeab8d279'/>
<id>urn:sha1:afb1f4d692bb593b3f200d490dd3f8fdeab8d279</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/DRTVWR-600-maint-A' into brad/merge-maint-a-to-dev</title>
<updated>2024-05-23T18:31:19Z</updated>
<author>
<name>Brad Linden</name>
<email>brad@lindenlab.com</email>
</author>
<published>2024-05-23T18:31:19Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=a1f49564d670a2c41bfa25c833bba2564b9b7f48'/>
<id>urn:sha1:a1f49564d670a2c41bfa25c833bba2564b9b7f48</id>
<content type='text'>
</content>
</entry>
<entry>
<title>#1354 Make coroutines use LLCoros::Mutex instead of LLMutex (#1356)</title>
<updated>2024-05-02T15:57:39Z</updated>
<author>
<name>RunitaiLinden</name>
<email>davep@lindenlab.com</email>
</author>
<published>2024-05-02T15:57:39Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=7fc5f7e649c564fa8479a72a45459d0cc427d0f8'/>
<id>urn:sha1:7fc5f7e649c564fa8479a72a45459d0cc427d0f8</id>
<content type='text'>
* #1354 Make coroutines use LLCoros::Mutex instead of LLMutex

* #1354 Fix some more unsafe coroutine executions.

* #1354 Implement changes requested by Nat</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>SL-19299 Code formatting in modified files</title>
<updated>2023-08-23T18:43:49Z</updated>
<author>
<name>Alexander Gavriliuk</name>
<email>alexandrgproductengine@lindenlab.com</email>
</author>
<published>2023-08-23T05:13:43Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=beb6181863bbce18ff7f408014e02a1086bc9711'/>
<id>urn:sha1:beb6181863bbce18ff7f408014e02a1086bc9711</id>
<content type='text'>
</content>
</entry>
<entry>
<title>SL-19299 Viewer crashes after change 'Pick a physics model:' dropdown</title>
<updated>2023-08-23T16:16:43Z</updated>
<author>
<name>Alexander Gavriliuk</name>
<email>alexandrgproductengine@lindenlab.com</email>
</author>
<published>2023-08-23T09:06:53Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=85efb85acfa098998c0f1249320f7e08288efdfc'/>
<id>urn:sha1:85efb85acfa098998c0f1249320f7e08288efdfc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>SL-16815 and SL-16906 Avoid redundant bumpmap generation, add some assertions around ref counting and (hack) fix crash on shutdown from dangling texture reference (reduced to 1 dangling texture from several hundred, can't find the remaining reference).</title>
<updated>2022-02-23T22:51:33Z</updated>
<author>
<name>Dave Parks</name>
<email>davep@lindenlab.com</email>
</author>
<published>2022-02-23T22:51:33Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=d9a68339d5aa18af349e347d6ed74bc01824cec7'/>
<id>urn:sha1:d9a68339d5aa18af349e347d6ed74bc01824cec7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-494: Use std::thread::id for LLThread::currentID().</title>
<updated>2020-03-25T19:28:17Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-12-06T21:31:49Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=5e7df752a66b2082d063d2c4a10bc7013d479f55'/>
<id>urn:sha1:5e7df752a66b2082d063d2c4a10bc7013d479f55</id>
<content type='text'>
LLThread::currentID() used to return a U32, a distinct unsigned value
incremented by explicitly constructing LLThread or by calling LLThread::
registerThreadID() early in a thread launched by other means. The latter
imposed an unobvious requirement on new code based on std::thread. Using
std::thread::id instead delegates to the compiler/library the problem of
distinguishing threads launched by any means.

Change lots of explicit U32 declarations. Introduce LLThread::id_t typedef to
avoid having to run around fixing uses again if we later revisit this decision.

LLMutex, which stores an LLThread::id_t, wants a distinguished value meaning
NO_THREAD, and had an enum with that name. But as std::thread::id promises
that the default-constructed value is distinct from every valid value,
NO_THREAD becomes unnecessary and goes away.

Because LLMutex now stores LLThread::id_t instead of U32, make llmutex.h
#include "llthread.h" instead of the other way around. This makes LLMutex an
incomplete type within llthread.h, so move LLThread::lockData() and
unlockData() to the .cpp file. Similarly, remove llrefcount.h's #include
"llmutex.h" to break circularity; instead forward-declare LLMutex.

It turns out that a number of source files assumed that #include "llthread.h"
would get the definition for LLMutex. Sprinkle #include "llmutex.h" as needed.

In the SAFE_SSL code in llcorehttp/httpcommon.cpp, there's an ssl_thread_id()
callback that returns an unsigned long to the SSL library. When LLThread::
currentID() was U32, we could simply return that. But std::thread::id is very
deliberately opaque, and can't be reinterpret_cast to unsigned long.
Fortunately it can be hashed because std::hash is specialized with that type.
</content>
</entry>
<entry>
<title>SL-10291 Replace apr_atomic with standard C++11 functionality</title>
<updated>2019-01-15T16:31:17Z</updated>
<author>
<name>andreykproductengine</name>
<email>andreykproductengine@lindenlab.com</email>
</author>
<published>2019-01-15T16:31:17Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=fa15830e02ed249186625e845e2ac19749d10193'/>
<id>urn:sha1:fa15830e02ed249186625e845e2ac19749d10193</id>
<content type='text'>
</content>
</entry>
<entry>
<title>SL-10291 cleanup-mutex</title>
<updated>2019-01-16T23:53:27Z</updated>
<author>
<name>andreykproductengine</name>
<email>andreykproductengine@lindenlab.com</email>
</author>
<published>2019-01-16T23:53:27Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=346fc435f1b12e47b8bf51d15c70ceca4615de41'/>
<id>urn:sha1:346fc435f1b12e47b8bf51d15c70ceca4615de41</id>
<content type='text'>
</content>
</entry>
</feed>
