The libfmt version currently used in v1.15.1 of spdlog contains an
ABI compatibility issue on Windows
(https://github.com/fmtlib/fmt/issues/4359) which caused build failures.
AudioOutput::addFrameToBuffer used to emit a signal for deleting the old
speech buffer. However, it implicitly relied on that connection being
direct (i.e. it relied on addFrameToBuffer to be called from the main
thread) as otherwise, there would be the potential for a memory leak
where the speech buffer is not processed by removeBuffer before the
addFrameToBuffer call has replaced the associated entry in qmOutputs. At
that point speech will be the last reference pointing to that object,
and as soon as speech goes out of scope, the memory for that object
would have leaked.
In order to make the control flow more clear, we now skip the signal
emission and instead call removeBuffer directly. This has been done in a
way that also prevents the need for an additional acquisition of a write
lock.
Before, the actual wiping of elements was delegated to the removeBuffer
function by means of Qt's signal/slot mechanism. This required a rather
inefficient implementation inside wipe() (using an auxiliary list), lead
to constant locking and re-locking (since a write lock is acquired and
released for every buffer individually) and made it unclear whether
after AudioOutput::wipe() returns, the buffer has actually been wiped
(due to the way the Auto connection type for Qt signal/slots work).
This commit ensures that wipe no longer delegates the work, thereby
fixing all the abovementioned issues.
The AudioOutput::removeUser function used to initiate a signal being
emitted that leads to the deletion of the audio buffer related to the
given user and also to the removal of that user (and buffer) from the
qmOutputs map.
Since removeUser has (thus far) always been called from the main thread
(in which the AudioOutput QThread object lives), the connection has been
direct, meaning that once removeUser returns to the caller, the user has
indeed been removed from AudioOutput.
However, if removeUser was called from a different thread, the
connection would be queued, meaning that AudioOutput still holds a
reference (or rather pointer) to that user when removeUser returns. This
can easily lead to a memory corruption issue.
Therefore, this commit ensures that removeUser always makes a direct
function call to remove all references to that user so that the caller
can be sure that AudioOutput will have forgotten about that particular
user once that function returns.
Drop the 'unreliable' label from UDP. Delivery is not guaranteed, but delivery reliability largely depends on network context. Unreliable makes it sound more negative and error-prone than it is. We use UDP because and with the understanding that in most cases it is quite reliable, or reliable enough, rather than simply being unreliable. The point is that we use it for low-latency. Everything else is technical reasoning.
Prefer short statement sentences over long comma sentences.
'an TLSv1 encrypted connection' -> 'a TLSv1 encrypted connection'
Format message type name as inline code to indicate it being a "type" name.
We migrated our network protocol documentation into this repository, but the documentation is outdated, documenting the state of 1.2.0.
Add a few notes/disclaimers and pointers to up-to-date information.
Drop the 'unreliable' label from UDP. Delivery is not guaranteed, but delivery reliability largely depends on network context. Unreliable makes it sound more negative and error-prone than it is. We use UDP because and with the understanding that in most cases it is quite reliable, or reliable enough, rather than simply being unreliable. The point is that we use it for low-latency. Everything else is technical reasoning.
Prefer short statement sentences over long comma sentences.
'an TLSv1 encrypted connection' -> 'a TLSv1 encrypted connection'
Format message type name as inline code to indicate it being a "type" name.
Currently translated at 55.1% (1273 of 2308 strings)
TRANSLATION: Update Albanian translation
Currently translated at 55.1% (1273 of 2308 strings)
TRANSLATION: Update Albanian translation
Currently translated at 55.1% (1272 of 2308 strings)
TRANSLATION: Update Albanian translation
Currently translated at 55.0% (1270 of 2308 strings)
TRANSLATION: Update Albanian translation
Currently translated at 54.8% (1267 of 2308 strings)
TRANSLATION: Update Albanian translation
Currently translated at 54.9% (1269 of 2308 strings)
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Hartmnt <hartmnt@mumble.info>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/sq/
Translation: Mumble/Mumble Client
Currently translated at 100.0% (2308 of 2308 strings)
TRANSLATION: Update Finnish translation
Currently translated at 99.9% (2306 of 2308 strings)
TRANSLATION: Update Finnish translation
Currently translated at 99.8% (2305 of 2308 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Juli <julimiro@posteo.net>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/fi/
Translation: Mumble/Mumble Client
Currently translated at 100.0% (2308 of 2308 strings)
TRANSLATION: Update French translation
Currently translated at 100.0% (2308 of 2308 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: John Doe <thraex@numericable.fr>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/fr/
Translation: Mumble/Mumble Client
Currently translated at 85.8% (1981 of 2308 strings)
Co-authored-by: Anthony V <anthonyv156@outlook.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/el/
Translation: Mumble/Mumble Client
Convert our network protocol docs from rst (ReStructuredText) to md (Markdown) format.
---
This changeset is a followup to PR #6623. In that PR, which first integrated these docs into this repository, the comments indicated consensus that the docs should be in Markdown format to match our other docs.
This changeset is based on PR #6714, which does some baseline corrections, and which should be merged first.
---
Two tables are not converted to Markdown tables because they are not flat tables, which is hard, if not impossible, to represent in Markdown. Preformatted code blocks are being used for them instead.
Otherwise, the conversion seems straightforward.
The changeset includes individual commits by change type, so each kind of change can be traced. The first commit is purely a rename to ensure Git follows the content history across the file conversion.
* Replace non-breaking space ("nbsp") characters with normal space characters
* Fix rst cross-document reference that worked on readthedocs but does not work on GitHub rendering
These changes can be considered a follow-up or fixup to PR #6623, which integrated the network protocol docs into this repository.