Commit Graph

79423 Commits (0cdae450d884ecd18fc0f596b58a194ed6cb951a)

Author SHA1 Message Date
minerjr 0cdae450d8 FIRE-36022- Removing my USB headset crashes entire viewer - WebRTC fix
This is created to address the issue of USB headsets being removed or Bluetooth headsets with bad connections causing the viewer to lock up.

First Part: WebRTC

WebRTC now has an added inline atomic bool used to track when the worker thread is accessing the audio hardware. If the coroutine that is always running detects 10 consecutive true flag values, it will set WebRTC to exit and exit itself.

This coroutine was what was locking up the viewer as it spammed the mMainQueue with messages every update, but the worker thread was locked up and unable to receive the messages. Once the queue reached 1024 messages, it would lock up.

Underlying issue is the Windows Core Audio driver system crashes if too many threads have requests to get audio updates upon hardware changes. And with a USB headset having 2 devices in 1, it multiples the updates by 2x. The WebRTC audio system itself locks a mutex as it calls the core audio system to get set the input, but if it is already being processed by another thread, it then gets an exception to try again. The audio driver is not handling the message and crashes and does not return leaving the WebRTC worker thread locked.
2025-10-28 23:05:53 -03:00
Angeldark Raymaker 44ffa1df51 FIRE-35670: Move poses and copy newer versions
Moved preset poses so they're easier to find on non-windows
Updated viewer_manifest copy everything
Update preset poses in user dir if version updated
2025-10-27 21:54:31 +00:00
PanteraPolnocy 6c67960b21 FIRE-36045 Chinese Translation Update, by 小滢 Zi Ying 2025-10-27 20:07:39 +01:00
Ansariel b1026c6ea2 Update German translation 2025-10-24 22:10:51 +02:00
PanteraPolnocy 390f5431b6 FIRE-36037 Updated Japanese translation, by Logue Takacs
Pay + panel preference chat.
2025-10-24 15:21:26 +02:00
PanteraPolnocy d4fd72e5ac Add an option o disable auto-completion when typing @ mentions in chat 2025-10-23 16:33:22 +02:00
Hecklezz 3930c4b4c1 [FIRE-35996] Restore allowing creating folder from selected on recent and favorites inventory panels if they were in your clipboard 2025-10-21 18:22:10 +10:00
Hecklezz f479ed8757 [FIRE-36028] Fix OpenSim object permissions 2025-10-21 05:11:28 +10:00
Andrey Kleshchev fa7cacc755 #4724 Fix performance problems with My Outfits - <FS:PP> Cherry pick for FIRE-35936
# Conflicts:
#	indra/newview/lloutfitslist.cpp
2025-10-19 18:54:08 +02:00
Hecklezz 42df6526a2 [FIRE-35962] Fix crashes when checking for corrupt sounds 2025-10-19 17:59:03 +10:00
Ansariel 3410a182c5 initWebRTC() can get multiple times - make sure to unset previous observers before re-adding 2025-10-18 13:32:44 +02:00
Ansariel d733bef269 Restore original indentation 2025-10-18 12:42:20 +02:00
Ansariel 9fe6e65aed Continue keeping built-in audio effects disabled - only disable duplicate call to updateDevices() which is already called via
LLWebRTCVoiceClient::initWebRTC() -> LLWebRTCVoiceClient::refreshDeviceLists() -> LLWebRTCImpl::refreshDevices()

and duplicate to

LLWebRTCVoiceClient::initWebRTC() -> llwebrtc::init() -> LLWebRTCImpl::init()
2025-10-18 12:26:47 +02:00
minerjr 4a6975a944 FIRE-36022 - Removing my USB headset crashes entire viewer
Commented out a block of new code recently added which was also being called by one of the callback functions.
This had the side effect of having 2 LLWebRTCDevicesObserver listening to the hardware removal events and cause both to trigger events at the same time, which may be the source of the queue being locked up in a race condition.

Was able to reproduce issue 2x without code change by moving mouse around a lot while on  rezing and then pulling USB headset out of the USB port. Direct motherboard USB port seemed to work the best as could not trigger while headset was in USB hub.
2025-10-17 22:01:17 -03:00
PanteraPolnocy b5c02e1914 FIRE-36021 Chinese Translation Update, by 小滢 Zi Ying 2025-10-17 13:01:25 +02:00
PanteraPolnocy 4b3420c4ee Set OutfitListFilterFullList to true by default to bring back the older behaviour of displaying filtered outfits that users are familiar with
This also ensures compatibility with skins that don't provide a toggle for this option (such as Starlight).
2025-10-17 08:36:25 +02:00
PanteraPolnocy 1797b9e80e Update chat transcripts radar context menu item in all translations 2025-10-16 16:59:30 +02:00
Hecklezz 90a1885942 [FIRE-35076] Added the 'View chat transcripts...' button to our nearby people/radar right-click context menu 2025-10-16 21:31:50 +10:00
Hecklezz 08fc848653 Reverted part of Linking.cmake update for WebRTC until 2025.07 is merged 2025-10-16 14:39:47 +10:00
PanteraPolnocy 0f72d5090b FIRE-36018 Updated Japanese translation, by Logue Takacs 2025-10-15 18:30:46 +02:00
Beq 763f7b7f9a Merge remote-tracking branch 'origin/master' 2025-10-15 14:31:01 +01:00
Beq 125f42cbe7 Use RyeMutt fixed WebRTC in lieu of LL until upstream is re-aligned
Linux support is broken in LL's upstream repo. Using Rye's fixes across all three platforms for consistency
2025-10-15 14:30:32 +01:00
Ansariel ad51dd5606 Fix C26444 compiler warning (creating unnamed RAII instances that can lead to undefined behavior) 2025-10-14 10:13:09 +02:00
Andrey Kleshchev dc54661b3a #4819 WebRTC crashes after a failed login 2025-10-14 10:04:56 +02:00
Hecklezz 14e3561f67 Updated Linking.cmake to fix compilation issues with the updated WebRTC 2025-10-14 16:04:14 +10:00
minerjr 2ef2233afa FIRE-36016 - Re-added Store/Restore boost levels of selected objects
Re-adding the feature to store and restore texture boost levels when a user edit's an object.

When you right click on an object. All the textures assigned to it get their boost level set to BOOST_SELECTED.

For LOD textures, once the texture's ProcessStats is completed, it resets the boost level to BOOST_NONE. This can cause the texture to then be subject to Texture Bias when in low memory, where before it was possibly protected as being a higher priority texture.

Now when the boost levels is about to change to BOOST_SELECTED, it gets stored and in ProcessStats, the boost level is restored.

Issue was fixed before but was rolled back. This is just restoring this one fix.
2025-10-13 21:04:25 -03:00
PanteraPolnocy 56648715d6 Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm 2025-10-13 23:53:00 +02:00
PanteraPolnocy 8f2991e313 Apply guides' structural changes to all applicable languages 2025-10-13 23:52:45 +02:00
Ansariel 0f53f79382 Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm 2025-10-13 23:43:30 +02:00
Ansariel 259c453f6d Fixing formatting, calls to glLineWidth with invalid line width and chuck in some improvements 2025-10-13 23:43:19 +02:00
PanteraPolnocy cfea5fe070 Updated Polish translation 2025-10-13 23:39:43 +02:00
Ansariel 137cd754e9 Update German translation 2025-10-13 23:23:54 +02:00
Ansariel e5044faabc Fix layout stuff 2025-10-13 23:23:43 +02:00
Beq 27cf30bdd3 Merge remote-tracking branch 'origin/master' 2025-10-13 21:33:22 +01:00
Ansariel 4066a9eb8a Update German translation 2025-10-13 22:21:00 +02:00
Beq abedbe4e32 Merge branch 'Fix-photo-overlay' 2025-10-13 20:44:33 +01:00
Beq 3b33e548f4 [FIRE-35342] Fix frame guide rendering inside the scene
Add UI for controlling the settings, add new styles.
Snapshot guide with golden ratio options
Adds golden ratio composition guides to the snapshot tool, including options for different orientations (top-left, top-right, bottom-left, bottom-right).
Also refactors the snapshot guide settings into a separate floater for better organization.
2025-10-13 20:10:48 +01:00
Hecklezz 911b4e810c [FIRE-36011] Fixed RemoveItemWarn invalid notification and deleting no-mod content
Merged upstream in PR#4812
2025-10-13 22:56:03 +10:00
Hecklezz 4855714b46 Updated CMakeLists.txt for LLWebRTC to fix compilation issues with the updated WebRTC 2025-10-13 14:37:32 +10:00
Hecklezz 5fb339d033 Updated WebRTC.cmake to fix compilation issues with the updated WebRTC 2025-10-13 14:32:26 +10:00
Ansariel 9538e515d6 Use timing from develop branch for outfits list to smoothening first open 2025-10-12 14:31:28 +02:00
Andrey Kleshchev ee43165bad #4695 Fix device update causing a crash 2025-10-12 16:35:11 +10:00
Andrey Kleshchev 0dcade5e1d #4695 Fix missing voice cleanup
Cleanup is in LLVoiceClient::terminate()
gWebRTCImpl was never deleted
Added mDeviceModule security
2025-10-12 16:34:56 +10:00
Andrey Kleshchev 5a8dfe2d19 #4691 Log WebRTC termination
for diagnostic purposes
2025-10-12 16:34:35 +10:00
Roxanne Skelly 81c01ab5bc Fix indexing problem with mac devices (#4676)
* Fix indexing problem with mac devices

This resulted in the wrong device being selected.

Also, fix a shutdown crash where recording was not being stopped, hence the recording
thread was still running on shutdown and crashed because it lost access to resources.

Fix an issue with p2p calls where they're coming up muted even though the button indicates
they are unmuted.

* Always refresh device list on notification of device changes

Even when the selected device doesn't change, we need to
re-deploy it as it might have had characteristics (sampling rate, etc.) changed.

Also, we need to redeploy when the Default device has changed
2025-10-12 16:34:22 +10:00
Andrey Kleshchev cf683a2eb8 #4675 Voice indicator did not reappear after tuning
resume() was trigggering sOnCurrentChannelChanged which was wiping
participant list with no follow up updates.
2025-10-12 16:33:51 +10:00
Roxanne Skelly d070b996bd [WebRTC] Rework device handling sequence so that we can handle unplugging/re-plugging devices (#4593)
* [WebRTC] Rework device handling sequence so that we can handle unplugging/re-plugging devices

The device handling was not processing device updates in the proper sequence as
things like AEC use both input and output devices.  Devices like headsets are both
so unplugging them resulted in various mute conditions and sometimes even a crash.

Now, we update both capture and render devices at once in the proper sequence.

Test Guidance:
* Bring two users in the same place in webrtc regions.
* The 'listening' one should have a headset or something set oas 'Default'
* Press 'talk' on one, and verify the other can hear.
* Unplug the headset from the listening one.
* Validate that audio changes from the headset to the speakers.
* Plug the headset back in.
* Validate that audio changes from speakers to headset.
* Do the same type of test with the headset viewer talking.
* The microphone used should switch from the headset to the computer (it should have one)

Do other various device tests, such as setting devices explicitly, messing with the device selector, etc.

* Fix race condition when multiple change device requests might come in at once

* Update to m137

The primary feature of this commit is to update libwebrtc from m114
to m137.  This is needed to make webrtc buildable, as m114 is not buildable
by the current toolset.

m137 had some changes to the API, which required renaming or changing namespace
of some of the calls.

Additionally, this PR moves from a callback mechanism for gathering the energy
levels for tuning to a wrapper AudioDeviceModule, which gives us more control
over the audio stream.

Finally, the new m137-based webrtc has been updated to allow for 192khz audio
streams.

* Properly pass the observer setting into the inner audio device module

* Update to m137 and get rid of some noise

    This change updates to m137 from m114, which required a few API changes.

    Additionally, this fixes the hiss that happens shortly after someone unmutes: https://github.com/secondlife/server/issues/2094

    There was also an issue with a slight amount of repeated after unmuting if there was audio right before unmuting.  This is because
    the audio processing and buffering still had audio from the previous speaking session.  Now, we inject nearly a half second of
    silence into the audio buffers/processor after unmuting to flush things.

* Install nsis on windows

* Use the newer digital AGC pipeline

m137 improved the AGC pipeline and the existing analog style is going away
so move to the new digital pipeline.

Also, some tweaking for audio levels so that we don't see inworld bars when tuning,
so one's own bars seem a reasonable size, etc.

* Install NSIS during windows sisgning and package build step

* Try pinning the packaging to windows 2022 to deal with missing nsis

* Adjust gain calculation and audio level calculations for tuning and peer connections

* Update with mac universal webrtc build

* Tuning of voice indicators for both tuning mode and inworld for self.

* Redo device deployment to handle cases where multiple deploy requests pile up

Also, mute when leaving webrtc-enabled regions or parcels,
and unmute when voice comes back.

* pre commit issue
2025-10-12 16:32:18 +10:00
PanteraPolnocy 59e99b2aca FIRE-36012 Chinese translation update, by 小滢 Zi Ying 2025-10-11 20:37:51 +02:00
Hecklezz 24e526a111 Corrected calcDataSizeJ2C change so it compiles on macOS and Linux 2025-10-12 02:05:02 +10:00
Hecklezz 14ae64f297 Restore allowing creating folder from selected on recent and favorites inventory panels 2025-10-11 03:43:20 +10:00