<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/llcommon/llmutex.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>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>viewer#2608 Crash at LLSnapshotLivePreview::getFormattedImage</title>
<updated>2024-09-19T17:56:10Z</updated>
<author>
<name>Andrey Kleshchev</name>
<email>andreykproductengine@lindenlab.com</email>
</author>
<published>2024-09-19T17:11:17Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=25969b330e4dc69f6eb39a487b171ccc07a5df14'/>
<id>urn:sha1:25969b330e4dc69f6eb39a487b171ccc07a5df14</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix line endlings</title>
<updated>2024-05-22T19:40:26Z</updated>
<author>
<name>Ansariel</name>
<email>ansariel.hiller@phoenixviewer.com</email>
</author>
<published>2024-05-22T19:25:21Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=e2e37cced861b98de8c1a7c9c0d3a50d2d90e433'/>
<id>urn:sha1:e2e37cced861b98de8c1a7c9c0d3a50d2d90e433</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/main' into DRTVWR-600-maint-A</title>
<updated>2024-05-22T17:04:52Z</updated>
<author>
<name>Ansariel</name>
<email>ansariel.hiller@phoenixviewer.com</email>
</author>
<published>2024-05-22T17:04:52Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=1b67dd855c41f5a0cda7ec2a68d98071986ca703'/>
<id>urn:sha1:1b67dd855c41f5a0cda7ec2a68d98071986ca703</id>
<content type='text'>
# Conflicts:
#	autobuild.xml
#	indra/cmake/CMakeLists.txt
#	indra/cmake/GoogleMock.cmake
#	indra/llaudio/llaudioengine_fmodstudio.cpp
#	indra/llaudio/llaudioengine_fmodstudio.h
#	indra/llaudio/lllistener_fmodstudio.cpp
#	indra/llaudio/lllistener_fmodstudio.h
#	indra/llaudio/llstreamingaudio_fmodstudio.cpp
#	indra/llaudio/llstreamingaudio_fmodstudio.h
#	indra/llcharacter/llmultigesture.cpp
#	indra/llcharacter/llmultigesture.h
#	indra/llimage/llimage.cpp
#	indra/llimage/llimagepng.cpp
#	indra/llimage/llimageworker.cpp
#	indra/llimage/tests/llimageworker_test.cpp
#	indra/llmessage/tests/llmockhttpclient.h
#	indra/llprimitive/llgltfmaterial.h
#	indra/llrender/llfontfreetype.cpp
#	indra/llui/llcombobox.cpp
#	indra/llui/llfolderview.cpp
#	indra/llui/llfolderviewmodel.h
#	indra/llui/lllineeditor.cpp
#	indra/llui/lllineeditor.h
#	indra/llui/lltextbase.cpp
#	indra/llui/lltextbase.h
#	indra/llui/lltexteditor.cpp
#	indra/llui/lltextvalidate.cpp
#	indra/llui/lltextvalidate.h
#	indra/llui/lluictrl.h
#	indra/llui/llview.cpp
#	indra/llwindow/llwindowmacosx.cpp
#	indra/newview/app_settings/settings.xml
#	indra/newview/llappearancemgr.cpp
#	indra/newview/llappearancemgr.h
#	indra/newview/llavatarpropertiesprocessor.cpp
#	indra/newview/llavatarpropertiesprocessor.h
#	indra/newview/llbreadcrumbview.cpp
#	indra/newview/llbreadcrumbview.h
#	indra/newview/llbreastmotion.cpp
#	indra/newview/llbreastmotion.h
#	indra/newview/llconversationmodel.h
#	indra/newview/lldensityctrl.cpp
#	indra/newview/lldensityctrl.h
#	indra/newview/llface.inl
#	indra/newview/llfloatereditsky.cpp
#	indra/newview/llfloatereditwater.cpp
#	indra/newview/llfloateremojipicker.h
#	indra/newview/llfloaterimsessiontab.cpp
#	indra/newview/llfloaterprofiletexture.cpp
#	indra/newview/llfloaterprofiletexture.h
#	indra/newview/llgesturemgr.cpp
#	indra/newview/llgesturemgr.h
#	indra/newview/llimpanel.cpp
#	indra/newview/llimpanel.h
#	indra/newview/llinventorybridge.cpp
#	indra/newview/llinventorybridge.h
#	indra/newview/llinventoryclipboard.cpp
#	indra/newview/llinventoryclipboard.h
#	indra/newview/llinventoryfunctions.cpp
#	indra/newview/llinventoryfunctions.h
#	indra/newview/llinventorygallery.cpp
#	indra/newview/lllistbrowser.cpp
#	indra/newview/lllistbrowser.h
#	indra/newview/llpanelobjectinventory.cpp
#	indra/newview/llpanelprofile.cpp
#	indra/newview/llpanelprofile.h
#	indra/newview/llpreviewgesture.cpp
#	indra/newview/llsavedsettingsglue.cpp
#	indra/newview/llsavedsettingsglue.h
#	indra/newview/lltooldraganddrop.cpp
#	indra/newview/llurllineeditorctrl.cpp
#	indra/newview/llvectorperfoptions.cpp
#	indra/newview/llvectorperfoptions.h
#	indra/newview/llviewerparceloverlay.cpp
#	indra/newview/llviewertexlayer.cpp
#	indra/newview/llviewertexturelist.cpp
#	indra/newview/macmain.h
#	indra/test/test.cpp
</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>Convert BOOL to bool in llrender</title>
<updated>2024-02-20T00:14:01Z</updated>
<author>
<name>Ansariel</name>
<email>ansariel.hiller@phoenixviewer.com</email>
</author>
<published>2024-02-19T23:50:39Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=b2c271367296744fbbe2262e55d0ea4f8f5ccdc9'/>
<id>urn:sha1:b2c271367296744fbbe2262e55d0ea4f8f5ccdc9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>[Linux]gcc is broken for in place template instantiation.</title>
<updated>2024-02-19T16:11:17Z</updated>
<author>
<name>Beq</name>
<email>beqjanus@gmail.com</email>
</author>
<published>2024-02-19T15:13:25Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=fd7f817171f9842470e83832c67d48065e81ca01'/>
<id>urn:sha1:fd7f817171f9842470e83832c67d48065e81ca01</id>
<content type='text'>
</content>
</entry>
<entry>
<title>SL-20743 Use LLMutex in LLImageBase for internal data thread-safety</title>
<updated>2023-12-21T18:12:52Z</updated>
<author>
<name>Alexander Gavriliuk</name>
<email>alexandrgproductengine@lindenlab.com</email>
</author>
<published>2023-12-15T17:26:14Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=74c8b028d42a8c5b080bb861e427f38cedd4ad7c'/>
<id>urn:sha1:74c8b028d42a8c5b080bb861e427f38cedd4ad7c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-559 WIP - optimize ARC calculation et al.</title>
<updated>2023-05-03T22:30:02Z</updated>
<author>
<name>RunitaiLinden</name>
<email>davep@lindenlab.com</email>
</author>
<published>2023-05-03T22:30:02Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=1cadfd44fe5ddafaf3ba3560bd8ec8e1351b347d'/>
<id>urn:sha1:1cadfd44fe5ddafaf3ba3560bd8ec8e1351b347d</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>
</feed>
