<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/newview/llvoicewebrtc.cpp, 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-10-14T04:52:14Z</updated>
<entry>
<title>Merge tag 'Second_Life_Release#fac07196-26.5' into 26.5</title>
<updated>2026-10-14T04:52:14Z</updated>
<author>
<name>Erik Kundiman</name>
<email>erik@megapahit.org</email>
</author>
<published>2026-10-14T04:52:14Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=b449791d3995c07bf6a910cd914344da3665ca9c'/>
<id>urn:sha1:b449791d3995c07bf6a910cd914344da3665ca9c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/release/26.5' into geenz/main-26.5</title>
<updated>2026-10-13T18:34:41Z</updated>
<author>
<name>Jonathan "Geenz" Goodman</name>
<email>geenz@geenzo.com</email>
</author>
<published>2026-10-13T18:34:41Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=181fd93f799e15a6ff924362c4a05be8db3639af'/>
<id>urn:sha1:181fd93f799e15a6ff924362c4a05be8db3639af</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge tag 'Second_Life_Develop#8fb38016-2026-09-12' into 26.5</title>
<updated>2026-09-22T06:55:07Z</updated>
<author>
<name>Erik Kundiman</name>
<email>erik@megapahit.org</email>
</author>
<published>2026-09-22T06:55:07Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=66877554dbdec33d28171420a2b4fde65e309e7c'/>
<id>urn:sha1:66877554dbdec33d28171420a2b4fde65e309e7c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>#6315 Separate voice queue from main queue</title>
<updated>2026-09-17T14:44:43Z</updated>
<author>
<name>Andrey Kleshchev</name>
<email>117672381+akleshchev@users.noreply.github.com</email>
</author>
<published>2026-09-16T09:50:49Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=f2586370166a41b0be95c607df2f8df98589458f'/>
<id>urn:sha1:f2586370166a41b0be95c607df2f8df98589458f</id>
<content type='text'>
Voice should not 'runFor' main app loop on shutdown.
</content>
</entry>
<entry>
<title>#5880 fix voice settings not reapplying when toggled to default</title>
<updated>2026-09-08T16:18:05Z</updated>
<author>
<name>Maxim Nikolenko</name>
<email>maximnproductengine@lindenlab.com</email>
</author>
<published>2026-09-08T16:18:05Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=dedb490a113633ae4311b00cb844b50ed950864f'/>
<id>urn:sha1:dedb490a113633ae4311b00cb844b50ed950864f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'secondlife/release/26.4' into 26.4</title>
<updated>2026-09-04T13:58:53Z</updated>
<author>
<name>Erik Kundiman</name>
<email>erik@megapahit.org</email>
</author>
<published>2026-09-01T10:35:23Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=00bb3bb6f07660bd914d29a1389342bb3060d254'/>
<id>urn:sha1:00bb3bb6f07660bd914d29a1389342bb3060d254</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge pull request #6129 from secondlife/roxie/fix-webrtc-terminate</title>
<updated>2026-08-18T17:19:03Z</updated>
<author>
<name>Roxanne Skelly</name>
<email>roxie@lindenlab.com</email>
</author>
<published>2026-08-18T17:19:03Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=ae3e2ee100b0166525b149aecbde5f68ebc683b2'/>
<id>urn:sha1:ae3e2ee100b0166525b149aecbde5f68ebc683b2</id>
<content type='text'>
Fix shutdown crash and cut WebRTC teardown time</content>
</entry>
<entry>
<title>p#682 Fix shutdown crash and cut WebRTC teardown time</title>
<updated>2026-08-12T21:29:29Z</updated>
<author>
<name>Roxie Linden</name>
<email>roxie@lindenlab.com</email>
</author>
<published>2026-08-12T21:29:29Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=d4efc4f2aef0065f4238cc9b224eae807588ab62'/>
<id>urn:sha1:d4efc4f2aef0065f4238cc9b224eae807588ab62</id>
<content type='text'>
terminate() released the thread unique_ptrs on the timeout path while the
detached shutdown thread was still running the lambda that reads them, so a
slow shutdown became a null deref at the next BlockingCall.  Leave the members
alone and report the timeout instead, so the caller leaks this object rather
than deleting it out from under the detached thread.

Reduce how often that timeout is reached at all:

- Post the audio device stop instead of blocking on it.  StopRecording and
  StopPlayout each wait up to 2s on a WASAPI thread, spending much of the 10s
  budget before the connections were touched.  The device stop has to stay on
  the worker thread (AudioDeviceBuffer is guarded by a sequence checker bound
  to it), but the queue is FIFO, so ForceTerminate still runs after it while
  the signaling close gets on with its network-thread work.

- Drain the peer connections in LLWebRTCVoiceClient::terminate() before handing
  off to llwebrtc::terminate(), bounded to 3s.  An estate session can hold ten
  live connections -- the current region plus up to eight neighbours -- and
  closing them inline and serially under the shutdown budget is what made it
  tight.  Draining also quiets the stats poll, so PeerConnection::Close() no
  longer blocks in WaitForPendingRequest() on an in-flight GetStats.

Connections reaped by the drain are destroyed while webrtc is still fully
alive, so they must unregister and release their peer connections normally;
key the destructor's early-out off a new sWebRTCTerminated instead of
isShuttingDown().  Notify signaling observers even when there was no peer
connection to close, or a connection shut down before it finished initializing
parks in VOICE_STATE_WAIT_FOR_CLOSE, which has no timeout of its own.

Co-Authored-By: Claude Opus 5 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'release/26.3' into geenz/linux-to-develop</title>
<updated>2026-08-12T20:09:42Z</updated>
<author>
<name>Jonathan "Geenz" Goodman</name>
<email>geenz@geenzo.com</email>
</author>
<published>2026-08-12T20:09:42Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=480af3ea32856007b166a06ca4932078c9f557c6'/>
<id>urn:sha1:480af3ea32856007b166a06ca4932078c9f557c6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/develop-linux' into geenz/linux-to-develop</title>
<updated>2026-08-12T01:39:19Z</updated>
<author>
<name>Jonathan "Geenz" Goodman</name>
<email>geenz@geenzo.com</email>
</author>
<published>2026-08-12T01:39:19Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=8cabc33e960ca93fdc1a32c77cf611269d95d51b'/>
<id>urn:sha1:8cabc33e960ca93fdc1a32c77cf611269d95d51b</id>
<content type='text'>
</content>
</entry>
</feed>
