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. |
||
|---|---|---|
| .github | ||
| doc | ||
| etc | ||
| fsutils | ||
| indra | ||
| scripts | ||
| .clang-format | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .gitattributes | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| CONTRIBUTING.md | ||
| FIRESTORM-SOURCE_LICENSE_HEADER.txt | ||
| LICENSE | ||
| README.md | ||
| autobuild.xml | ||
| build.sh | ||
| build_target.sh | ||
| buildscripts_support_functions | ||
| requirements.txt | ||
README.md
Firestorm is a free client for 3D virtual worlds such as Second Life and various OpenSim worlds where users can create, connect and chat with others from around the world.
This repository contains the official source code for the Firestorm viewer.
Open Source
Firestorm is a third party viewer derived from the official Second Life client. The client codebase has been open source since 2007 and is available under the LGPL license.
Download
Pre-built versions of the viewer releases for Windows, Mac and Linux can be downloaded from the official website.
Build Instructions
Build instructions for each operating system can be found using the links below and in the official wiki.
[!NOTE] We do not provide support for compiling the viewer or issues resulting from using a self-compiled viewer. However, there is a self-compilers group within Second Life that can be joined to ask questions related to compiling the viewer: Firestorm Self Compilers
Contribute
Help make Firestorm better! You can get involved with improvements by filing bugs and suggesting enhancements via JIRA or creating pull requests.
Community respect
This section is guided by the TPV Policy and the Second Life Code of Conduct.
Firestorm code is made available during ongoing development, with the master branch representing the current nightly build. Developers and self-compilers are encouraged to work on their own forks and contribute back via pull requests, as detailed in the contributing guide.
If you intend to use our code for your own viewer beyond personal use, please only use code from official release branches (for example, Firestorm_7.1.13), rather than from pre-release/preview or nightly builds.