Commit Graph

11254 Commits

Author SHA1 Message Date
Robert Adam
d104eef1ff Temporarily switch back to a custom, patched version of SOCI for vcpkg compatibility 2025-03-22 17:41:15 +01:00
Robert Adam
fd10206f53 Update spdlog to a version with most recent libfmt
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.
2025-03-22 17:31:40 +01:00
Robert Adam
9bc2c52fdc Explicitly link to spdlog for mumble target" 2025-03-22 17:31:19 +01:00
Robert Adam
61ce2be07c Fix conversion warning 2025-03-22 11:17:40 +01:00
Robert Adam
2b19d746f9 REFAC: Logger impl to work in OBJECT lib setup 2025-03-22 11:11:36 +01:00
Robert Adam
715dbc5d17 Fix formatting in comment 2025-03-22 11:11:19 +01:00
Robert Adam
0e7d44bf63 MAINT: Switch SOCI submodule back to pointing to upstream
This is better than using a custom fork
2025-03-18 18:25:54 +01:00
Robert Adam
cc148d0cd9 Make DB test cope better in cases where connection to DB fails 2025-03-04 20:26:53 +01:00
Robert Adam
f3db0f5395 BUILD(shared): Properly include spdlog submodule 2025-03-04 18:57:52 +01:00
Robert Adam
07062f7926 MAINT: Replace copied spdlog files with submodule 2025-03-04 18:54:50 +01:00
Robert Adam
942fd9c4bd MAINT(ci): Use correct release name for Windows env 2025-03-04 18:43:17 +01:00
Robert Adam
ab4b5f4042 CI: Update build env to latest version 2025-02-27 20:18:28 +01:00
Robert Adam
5edcd2b80c Work around Qt MOC bug 2025-02-22 18:46:04 +01:00
Robert Adam
b077d96846 BUILD(cmake): Ensure MumbleServerIceWrapper.cpp is associated for correct target 2025-02-21 18:34:25 +01:00
Robert Adam
5c71903de4 CI: Update build env 2025-02-15 18:30:31 +01:00
Robert Adam
a4bfa5099f Merge remote-tracking branch 'upstream/master' into refac-database 2025-02-15 17:47:42 +01:00
Robert Adam
1e11a1caf3 BUILD(cmake): Work around invalidly reported Qt translation directory 2025-02-15 17:47:22 +01:00
Robert Adam
632beeed0b Remove unneeded comments 2025-02-15 17:44:02 +01:00
Robert Adam
c853799acf Revert to only requiring Qt version >= 6.2 2025-02-15 17:40:22 +01:00
Robert Adam
5b8c17595a
Merge PR #6723: CI(cirrus): Update to FreeBSD 14.2 2025-02-15 16:54:49 +01:00
Robert Adam
748a003ff4 Merge branch 'master' into refac-database 2025-02-15 16:40:52 +01:00
Robert Adam
9408db3267 CI(cirrus): Update to FreeBSD 14.2 2025-02-15 16:13:21 +01:00
Robert Adam
a218014943
Merge PR #6708: REFAC(client, audion): Various refactorings in AudioOutput 2025-02-07 19:54:43 +01:00
Robert Adam
8fc7a9316b REFAC(client,audio): Skip Qt signal/slot mechanism for buffer deletion
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.
2025-02-07 19:09:00 +01:00
Robert Adam
05f31ca97c REFAC(client, audio): Make wipe() do the wiping directly
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.
2025-02-07 19:09:00 +01:00
Robert Adam
fe11451b15 REFAC(client, audio): Ensure removeUser removes immediately
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.
2025-02-07 19:09:00 +01:00
Jan Klass
91ab126e22
Merge PR #6719: DOCS(dev): Improve wording and formatting of network protocol docs
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.
2025-02-01 19:27:35 +01:00
Jan Klass
b5cb4ef189
Merge PR #6718: DOCS(dev): Add network protocol outdated and up-to-date information
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.
2025-02-01 19:26:52 +01:00
Hartmnt
529da164e9
Merge PR #6683: FEAT(server, client): Add rolling average for packet statistics 2025-02-01 18:40:37 +01:00
Jan Klass
37aa66b19b DOCS(dev): Improve wording and formatting of network protocol docs
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.
2025-02-01 14:52:19 +01:00
Jan Klass
7cee314d86 DOCS(dev): Add network protocol outdated and up-to-date information 2025-02-01 14:45:10 +01:00
Hartmnt
e4ea26d6e8
Merge PR #6687: Translations update from Hosted Weblate 2025-02-01 12:20:08 +01:00
Hosted Weblate
381eeb5aa2
TRANSLATION: Update Chinese (Simplified Han script) translation
Currently translated at 100.0% (2308 of 2308 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: deluxghost <deluxghost@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/zh_Hans/
Translation: Mumble/Mumble Client
2025-02-01 10:02:16 +01:00
Hosted Weblate
63f99f33ee
TRANSLATION: Update Albanian translation
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
2025-02-01 10:02:16 +01:00
Hosted Weblate
e278682660
TRANSLATION: Update Finnish translation
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
2025-02-01 10:02:15 +01:00
Hosted Weblate
79752fd017
TRANSLATION: Update French translation
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
2025-02-01 10:02:14 +01:00
Hosted Weblate
3ef66a1ac3
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2308 of 2308 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Matthaiks <kitynska@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/pl/
Translation: Mumble/Mumble Client
2025-02-01 10:02:13 +01:00
Hosted Weblate
c3ee25366a
TRANSLATION: Update Czech translation
Currently translated at 63.9% (1476 of 2308 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jaroslav Lichtblau <l10n@lichtblau.cz>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/cs/
Translation: Mumble/Mumble Client
2025-02-01 10:02:12 +01:00
Hosted Weblate
d222a13de9
TRANSLATION: Update Catalan translation
Currently translated at 99.9% (2307 of 2308 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Josep M. Ferrer <txemaq@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ca/
Translation: Mumble/Mumble Client
2025-02-01 10:02:12 +01:00
Hosted Weblate
8ca230e04e
TRANSLATION: Update Ukrainian translation
Currently translated at 100.0% (2308 of 2308 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Максим Горпиніч <maksimgorpinic2005a@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/uk/
Translation: Mumble/Mumble Client
2025-02-01 10:02:12 +01:00
Hosted Weblate
d6ba4a8cff
TRANSLATION: Update Greek translation
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
2025-02-01 10:02:11 +01:00
Davide Beatrici
fb6422aa0d
Merge PR #6707: FEAT(client): Introduce new logging system based on spdlog 2025-01-29 04:34:53 +01:00
Jan Klass
9e30471529
Merge PR #6715: DOCS(dev): Convert network protocol rst to md
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.
2025-01-27 18:01:27 +01:00
Jan Klass
9d512e63d3
MERGE PR #6714: DOCS(dev): Clean up network protocol docs ()
* 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.
2025-01-27 17:57:37 +01:00
Jan Klass
b50ead336e DOCS(dev): Convert tables (where possible)
Two tables are not converted because they are not flat tables but contain "complex" content/structure.
2025-01-26 14:07:15 +01:00
Jan Klass
6247013cc2 DOCS(dev): Format field text definitions 2025-01-26 13:54:26 +01:00
Jan Klass
6c5615ba99 DOCS(dev): Mark up URL 2025-01-26 13:54:25 +01:00
Jan Klass
2096d56022 DOCS(dev): Convert text code fencing 2025-01-26 13:54:25 +01:00
Jan Klass
bebb473d5f DOCS(dev): Replace in-table code fencing 2025-01-26 13:54:25 +01:00
Jan Klass
02b3d6bf15 DOCS(dev): Drop rst ref defs 2025-01-26 13:54:24 +01:00