<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/llcommon/workqueue.h, branch 26.5</title>
<subtitle>Megapahit's fork of the Second Life viewer.
</subtitle>
<id>https://megapahit.org/viewer.git/atom?h=26.5</id>
<link rel='self' href='https://megapahit.org/viewer.git/atom?h=26.5'/>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/'/>
<updated>2026-09-23T23:28:04Z</updated>
<entry>
<title>Issue #6367: The viewer would hang on exit if still connected to a plugin.  Updates how the viewer dispatches coroutines to the main thread and removes an extraneous wait, that was incorrectly serializing asynchronous messages.</title>
<updated>2026-09-23T23:28:04Z</updated>
<author>
<name>Rider Linden</name>
<email>rider@lindenlab.com</email>
</author>
<published>2026-09-23T23:28:04Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=500587a04bf3a8793e8f32fe397e0b4e469aedb4'/>
<id>urn:sha1:500587a04bf3a8793e8f32fe397e0b4e469aedb4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Release/26.1.1 (#5530)</title>
<updated>2026-04-07T23:17:13Z</updated>
<author>
<name>Jonathan "Geenz" Goodman</name>
<email>geenz@lindenlab.com</email>
</author>
<published>2026-04-07T23:12:59Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=66dc10f0e9ab4f8d209f8a04671027c608daaffd'/>
<id>urn:sha1:66dc10f0e9ab4f8d209f8a04671027c608daaffd</id>
<content type='text'>
* Integrate Velopack installer and update framework

* Add Velopack update support for macOS and VVM integration

* Update Velopack version and dependencies

* Improve Velopack packaging for macOS

* #5346 Uninstall older non-velopack viewer (#5363)

* #5335 Fix silent uninstall asking about registry

* #5346 Uninstall older non-velopack viewer

* Use runtime viewer exe name, handle Velopack URL

* Velopack download failure diagnostic (#5520)

* Velopack download failure diagnostic

* Fix up velopack downloading updates.  Handle updates internally then hand them off to velopack. (#5524)

* More velopack changes.  Should download updates properly now.

* Don't include NSI files

* Restore optional updates, refine viewer restart behavior. (#5527)

* Add support for optional updates.

* Don't restart the viewer after the update unless it was optional.

* Setup UpdaterServiceSetting with velopack properly.

* Refine the restart behavior a bit - readd the old "the viewer must update" UX.

* If the update is still downloading, close should just reopen the downloading dialog.

---------

Co-authored-by: Jonathan "Geenz" Goodman &lt;geenz@lindenlab.com&gt;

* Remove SLVersionChecker from the viewer with velopack. (#5528)

* Remove SLVersionChecker updater integration

* Ensure that the portable install has the correct version number.

* Don't produce shortcuts with VPK - we do this with our post install.

* Bump viewer version from 26.1.0 to 26.1.1

* Potential fix for uninstaller not being functional.

* Fix for UpdaterServiceSetting being ignored.

* Filter for release channel when generating shortcuts.

* Add some more logging for icons on Windows builds.

* More VPK logging.

* Move velopack packaging in CI to the sign and package step.

* Enable velopack downgrade and skip older updates

* Move the version required checking into velopack's checks.

* Potential fix for downgrade prompts.

* Make sure our macOS flow mirrors Windows.

* Make sure to use the dev version of the mac sign and package.

* p#553 Only one of two uninstallers displayed

* #5346 Don't force user to shutdown velopack build for NSIS uninstall

* #5346 Ignore option for the uninstall dialog

* #5346 Fix early exit crash

* #5346 Properly reset version flag.

* Add some autodetect logic on macOS.

* p#564 Clear legacy links

* p#553 Handle uninstall records

* p#549 Permit testing release notes on a test build

* p#564 Remake nsis to velopack update flow

* p#564 Remake nsis to velopack update flow #2

* p#564 Fix incorrect value type

* p#553 Clear velopack's own registry entry in favor of a custom one

* #5346 Resolve duplicated window class name

* Bump to 2.1.0 of sign and package.

---------

Co-authored-by: Andrey Kleshchev &lt;117672381+akleshchev@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>#3612 Log issues with landmarks and rethrown exceptions</title>
<updated>2025-12-21T13:17:47Z</updated>
<author>
<name>Andrey Kleshchev</name>
<email>117672381+akleshchev@users.noreply.github.com</email>
</author>
<published>2025-12-20T11:51:31Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=f57c934676a928e84ae3af55b4886076decca2fc'/>
<id>urn:sha1:f57c934676a928e84ae3af55b4886076decca2fc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>#3918 Implement automatic shutdown for WorkQueueBase</title>
<updated>2025-04-23T15:56:27Z</updated>
<author>
<name>Andrey Lihatskiy</name>
<email>alihatskiy@productengine.com</email>
</author>
<published>2025-04-22T22:27:32Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=ec6c988bbbc59aed218d3629bf0c13192f6b726c'/>
<id>urn:sha1:ec6c988bbbc59aed218d3629bf0c13192f6b726c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Give control over thread queue's automatic shutdown</title>
<updated>2025-04-10T21:13:19Z</updated>
<author>
<name>Andrey Kleshchev</name>
<email>andreykproductengine@lindenlab.com</email>
</author>
<published>2024-10-31T00:30:54Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=9117a37c3d1bd9741e599b60fdf000f9f174f72a'/>
<id>urn:sha1:9117a37c3d1bd9741e599b60fdf000f9f174f72a</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>SL-19690: Properly qualify exception type.</title>
<updated>2023-05-08T16:31:57Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2023-05-08T16:31:57Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=d75ecde69c1289f4e3df8b75e9a74c5b05db318c'/>
<id>urn:sha1:d75ecde69c1289f4e3df8b75e9a74c5b05db318c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>SL-19690: Follow up on Rye Mutt's fix for shutdown crashes.</title>
<updated>2023-05-08T16:07:31Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2023-05-08T16:07:31Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=026ef1935dbdb21ab79159d38fb78e126dd6ac95'/>
<id>urn:sha1:026ef1935dbdb21ab79159d38fb78e126dd6ac95</id>
<content type='text'>
Rather than continuing to propagate try/catch (Closed)
(aka LLThreadSafeQueueInterrupt) constructs through the code base, make
WorkQueueBase::post() return bool indicating success (i.e. ! isClosed()).
This obviates postIfOpen(), which no one was using anyway.

In effect, postIfOpen() is renamed post(), bypassing the exception when
isClosed().

Review existing try/catch blocks of that sort, changing to test for post()
returning false.
</content>
</entry>
<entry>
<title>Fix LLThreadSafeQueueInterrupt in WorkQueueBase::postTo during shutdown by catching and returning false</title>
<updated>2023-05-05T21:23:29Z</updated>
<author>
<name>Rye Mutt</name>
<email>rye@alchemyviewer.org</email>
</author>
<published>2023-05-05T21:23:29Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=855cae27ccde4896509e3e22c68c441d6404ccfb'/>
<id>urn:sha1:855cae27ccde4896509e3e22c68c441d6404ccfb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-559: Fix broken workqueue_test.cpp.</title>
<updated>2022-12-14T01:49:01Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2022-12-14T01:49:01Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=424d3ef83cdb354e66789f22f65394f4db523128'/>
<id>urn:sha1:424d3ef83cdb354e66789f22f65394f4db523128</id>
<content type='text'>
Apparently Visual Studio and Xcode disagree on the intended lifespan of a
certain temporary expression. Capturing it in a named variable works.
</content>
</entry>
</feed>
