Commit Graph

10314 Commits

Author SHA1 Message Date
Robert Adam
23da8df813
MAINT: Give backport action a name 2023-01-04 16:12:25 +01:00
Robert Adam
310c13a1b0
Merge PR #6006: MAINT: Update backport config 2023-01-04 15:19:49 +01:00
Robert Adam
dd34177b06 MAINT: Add auto-backport support 2023-01-04 13:43:21 +01:00
Robert Adam
5076904763 MAINT: Update backport config 2023-01-04 13:43:03 +01:00
Robert Adam
ae322f3f2a
Merge PR #6001: MAINT: Rewrite changelog script
The new script is more powerful and in particular can compare across different branches.

Furthermore, it no longer only considers merge commits. Instead, all commits are screened individually, which should make the script be much more suitable for situations in which a PR introduces multiple changes that are not well described by a single commit message (the merge commit's one).
2023-01-04 13:14:16 +01:00
Robert Adam
33c7d91492
Merge PR #5926: FEAT(client): Always stop audio on/off cue when switching state
Previously, audio cues would play and continue to play no matter what. If very long sound samples were used, they would play longer than the user sends audio (regardless of PTT or VA) and they could even play over each other.

Fixes #1671
2023-01-03 13:17:01 +01:00
Robert Adam
3d4d754e10 MAINT: Rewrite changelog script
The new script is more powerful and in particular can compare across
different branches.

Furthermore, it no longer only considers merge commits. Instead, all
commits are screened individually, which should make the script be much
more suitable for situations in which a PR introduces multiple changes
that are not well described by a single commit message (the merge
commit's one).
2023-01-03 13:02:53 +01:00
Hartmnt
d79850c94d REFAC(client): Rename AudioOutputUser to AudioOutputBuffer
The name AudioOutputUser is a legacy one, or, in case it is meant as
"user of the audio output API", at least slightly misleading.
Since both AudioOutputSpeech and AudioOutputSample inherit AudioOutputUser
it makes more sense to name it as what it actually is: A buffer wrapper.
2023-01-02 22:55:07 +01:00
Hartmnt
89d5890541 FIX(client): Always stop audio on/off cue when switching state
Previously, audio cues would play and continue to play no matter
what. If very long sound samples were used, they would play longer
than the user sends audio (regardless of PTT or VA) and they could
even play over each other.

The commit introduces a member in AudioInput to save the last
sample played for audio cues. When switching from talking to
non-talking or vice versa, it first stops the previously
played cue.

Fixes mumble-voip#1671
2023-01-02 22:54:44 +01:00
Hartmnt
7406495a9b FIX(client): Fix rare double delete bug
AudioOutput keeps track of users and their speech, as well as samples
in qmOutputs. The mix() method will iterate over them and append all
completed outputs to a list 'qlDel'. This list is then - outside
of any synchronization - used to remove entries from qmOutputs.
Previously, other methods were also deleting from qmOutputs directly from
other threads. In rare conditions, when the output just finished and is
added to qlDel and then additionally manually deleted, the pointer could be
subject to a double delete.

This commit tries to mitigate the problem and overhauls the output
deletion by introducing a singal and a slot, delegating the deletion
to the audio thread event queue. A new AudioOutputToken class is
introduced, to prevent direct access to audio buffer pointers.
2023-01-02 22:54:40 +01:00
Robert Adam
6516951463
Merge PR #6000: BUILD(cmake): Cross-compile overlay on M1 macs
The overlay doesn't work on ARM Macs, so we disable it on these machines. However, the CMAKE_SYSTEM_PROCESSOR variable doesn't always hold the target architecture and as it turned out it contained the host arch on our M1 macOS builder, causing the overlay to be disabled for our x86 macOS binaries that were cross-compiled from our M1 machine.

Therefore, we now leverage the system we also use to detect the target architecture for passing it as a macro to our code.
2022-12-31 17:11:04 +01:00
Robert Adam
295b16f036 BUILD(cmake): Cross-compile overlay on M1 macs
The overlay doesn't work on ARM Macs, so we disable it on these
machines. However, the CMAKE_SYSTEM_PROCESSOR variable doesn't always
hold the target architecture and as it turned out it contained the host
arch on our M1 macOS builder, causing the overlay to be disabled for our
x86 macOS binaries that were cross-compiled from our M1 machine.

Therefore, we now leverage the system we also use to detect the target
architecture for passing it as a macro to our code.
2022-12-31 16:27:18 +01:00
Robert Adam
bde29b6a84
Merge PR #5944: FIX(client): Use SPSC queue for global shortcuts on Windows
We've been receiving quite a few reports about the program seemingly freezing, such as
forums.mumble.info/topic/14467-14-conflict-with-flight-control-rudder-pedals.

Turns out there are HID devices, namely advanced controllers, that constantly send packets.
The reason behind the behavior is probably to prevent games from losing track of the physical state.

Qt's event dispatcher blows up and consumes all resources, leading to:

QEventDispatcherWin32::registerTimer: Failed to create a timer (The current process has used all of its system allowance of handles for Window Manager objects.)

As a result, the UI completely freezes due to events not being processed anymore.
This commit fixes the issue by using an SPSC (Single Producer Single Consumer) queue.

The event loop and 20 ms timer are removed. The latter was strictly used for XInput and G-keys polling.
Both backends still work, potentially better than before: no more polling!
Whenever a HID message is received, the relevant code is executed.

Fixes #5631
2022-12-30 18:39:45 +01:00
Davide Beatrici
3710484e44 FIX(client): Use SPSC queue for global shortcuts on Windows
We've been receiving quite a few reports about the program seemingly freezing, such as
https://forums.mumble.info/topic/14467-14-conflict-with-flight-control-rudder-pedals.

Turns out there are HID devices, namely advanced controllers, that constantly send packets.
The reason behind the behavior is probably to prevent games from losing track of the physical state.

Qt's event dispatcher blows up and consumes all resources, leading to:

QEventDispatcherWin32::registerTimer: Failed to create a timer (The current process has used all of its system allowance of handles for Window Manager objects.)

As a result, the UI completely freezes due to events not being processed anymore.
This commit fixes the issue by using an SPSC (Single Producer Single Consumer) queue.

The event loop and 20 ms timer are removed. The latter was strictly used for XInput and G-keys polling.
Both backends still work, potentially better than before: no more polling!
Whenever a HID message is received, the relevant code is executed.
2022-12-30 17:57:13 +01:00
Davide Beatrici
755b67ebf5 MAINT: Add SPSCQueue as submodule
A bounded single-producer single-consumer wait-free and lock-free queue written in C++11.

It is going to be used for the Windows implementation of global shortcuts.
2022-12-30 13:16:02 +01:00
Robert Adam
cc5a570560
Merge PR #5998: CHANGE(client): Remove bundled Opus version
Since newer versions of libsndfile now link to the system-wide installed Opus version (on Linux distros), there would be a conflict between symbols defined in the system-wide installation and the self-built (bundled) Opus library.
This, as it turned out, can lead for instance to failing assertions due to pointer identities no longer holding because e.g. a function from the self-built Opus version ends up calling a sub-function from the system-wide Opus installation instead. This is also the root cause for the infamous "Opus crash" or "Audio wizard crash".

In order to avoid these issues, we don't ship a bundled Opus version anymore and instead make it a build prerequisite to have Opus installed on your system.

Fixes #5302
2022-12-28 14:34:14 +01:00
Robert Adam
57d2b60cd6 BUILD(cmake): Fix typo in warning message 2022-12-28 13:04:25 +01:00
Robert Adam
e4920a0364 TRANSLATION: Update translation files 2022-12-28 13:04:25 +01:00
Robert Adam
d11fd05062 CHANGE(client): Remove bundled Opus version
Since newer versions of libsndfile now link to the system-wide installed
Opus version (on Linux distros), there would be a conflict between
symbols defined in the system-wide installation and the self-built
(bundled) Opus library.
This, as it turned out, can lead for instance to failing assertions due
to pointer identities no longer holding because e.g. a function from the
self-built Opus version ends up calling a sub-function from the
system-wide Opus installation instead. This is also the root cause for
the infamous "Opus crash" or "Audio wizard crash".

In order to avoid these issues, we don't ship a bundled Opus version
anymore and instead make it a build prerequisite to have Opus installed
on your system.

Fixes #5302
2022-12-28 13:04:25 +01:00
Robert Adam
ca79e9a470 BUILD(cmake): find-pkg: also set _INCLUDE_DIRS variable 2022-12-28 13:04:24 +01:00
Robert Adam
939d506fc2
Merge PR #5997: Translations update from Hosted Weblate 2022-12-28 09:14:01 +01:00
Hosted Weblate
60a464a3ba
TRANSLATION: Update German translation
Currently translated at 100.0% (2106 of 2106 strings)

Co-authored-by: Robert Adam <dev@robert-adam.de>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/de/
Translation: Mumble/Mumble Client
2022-12-27 17:50:51 +01:00
Robert Adam
e012e16f3e
Merge PR #5995: FIX(client): Prevent loading unwanted Opus version
This commit ensures that we first try all names for the different base paths in turn, before we fall back for a generic search for that lib based only on the given name.
Otherwise, e.g. the system Opus library could be used instead of the bundled version compiled together with Mumble.
2022-12-27 15:54:15 +01:00
Robert Adam
80a5da057b FIX(client): Prevent loading unwanted Opus version
This commit ensures that we first try all names for the different base
paths in turn, before we fall back for a generic search for that lib
based only on the given name.
Otherwise, e.g. the system Opus library could be used instead of the
bundled version compiled together with Mumble.
2022-12-26 20:11:12 +01:00
Robert Adam
8dc465573c
Merge PR #5879: MAINT: Downgrade Opus submodule 2022-12-26 19:09:53 +01:00
Robert Adam
60d0a86b8e MAINT: Downgrade Opus submodule
Since newer Opus versions appear to cause crashes under some
circumstances, we downgrade our Opus submodule to point to the latest
stable release, which is v1.3.1 from 2019.

We will only be able to upgrade again, once the underlying issue causing
the crashes has been identified and fixed.

Fixes #5302
2022-12-26 18:04:34 +01:00
Robert Adam
9214413b0a MAINT: Fix .gitmodules Opus entry 2022-12-26 17:45:11 +01:00
Robert Adam
4f3c28932b
Merge PR #5992: BUILD(cmake): only assert install paths are relative when packaging 2022-12-26 17:37:09 +01:00
Robert Adam
4f56fd807d
Merge PR #5978: Translations update from Hosted Weblat 2022-12-26 17:07:19 +01:00
Hosted Weblate
08d75d5894
TRANSLATION: Update Turkish translation
Currently translated at 100.0% (2106 of 2106 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/tr/
Translation: Mumble/Mumble Client
2022-12-24 18:47:32 +01:00
Hosted Weblate
271456f06b
TRANSLATION: Update Finnish translation
Currently translated at 98.5% (2075 of 2106 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/fi/
Translation: Mumble/Mumble Client
2022-12-24 18:47:32 +01:00
Hosted Weblate
37ca5b3b14
TRANSLATION: Update Italian translation
Currently translated at 99.9% (2104 of 2106 strings)

Co-authored-by: Filippo Bolletta <bollettafilippo@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/it/
Translation: Mumble/Mumble Client
2022-12-24 18:47:32 +01:00
Hosted Weblate
4693874ed8
TRANSLATION: Update German translation
Currently translated at 100.0% (2106 of 2106 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Vri 🌈 <weblate@vrifox.cc>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/de/
Translation: Mumble/Mumble Client
2022-12-24 18:47:32 +01:00
Hosted Weblate
e3a5e6810a
TRANSLATION: Update Catalan translation
Currently translated at 23.1% (487 of 2106 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Omar Macías Molina <omar.maciasmolina@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ca/
Translation: Mumble/Mumble Client
2022-12-24 18:47:32 +01:00
Hosted Weblate
c9f4b6df67
TRANSLATION: Update French translation
Currently translated at 100.0% (2106 of 2106 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
2022-12-24 18:47:32 +01:00
Hosted Weblate
0f36848f93
TRANSLATION: Update Lithuanian translation
Currently translated at 52.9% (1115 of 2106 strings)

Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/lt/
Translation: Mumble/Mumble Client
2022-12-24 18:47:31 +01:00
Hosted Weblate
0e326bf652
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2106 of 2106 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
2022-12-24 18:47:31 +01:00
Hosted Weblate
416d07a726
TRANSLATION: Update Ukrainian translation
Currently translated at 6.8% (145 of 2106 strings)

TRANSLATION: Update Ukrainian translation

Currently translated at 6.8% (144 of 2104 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Platon Terekhov <gibbonsville_cowal@simplelogin.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/uk/
Translation: Mumble/Mumble Client
2022-12-24 18:47:31 +01:00
Hosted Weblate
19c492c62b
TRANSLATION: Update Chinese (Simplified) translation
Currently translated at 100.0% (2106 of 2106 strings)

TRANSLATION: Update Chinese (Simplified) translation

Currently translated at 100.0% (2106 of 2106 strings)

Co-authored-by: Eric <hamburger1024@duck.com>
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
2022-12-24 18:47:31 +01:00
Hosted Weblate
5838703eed
TRANSLATION: Update Dutch translation
Currently translated at 99.9% (2105 of 2106 strings)

Co-authored-by: Gert-dev <qnyasgjhapqyuhoibr@kiabws.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/nl/
Translation: Mumble/Mumble Client
2022-12-24 18:47:31 +01:00
Kenton Groombridge
1f86746a08 BUILD(cmake): only assert install paths are relative when packaging
When packaging is not enabled, do not assert that the install paths are
relative. This fixes issues with live ebuilds in Gentoo.

This partially reverts 703af920d8

Signed-off-by: Kenton Groombridge <concord@gentoo.org>
2022-12-24 10:55:52 -05:00
Robert Adam
ffeee576d2
Merge PR #5991: REFAC(server): Improve readability of Group::isMember
And while we're at it, give it a different name that better describes what this function is actually doing (spoiler: it is not only checking whether the given user is part of the specified group).
2022-12-16 08:15:20 +01:00
Robert Adam
18322e6db6 REFAC(server): Improve readability of Group::isMember
And while we're at it, give it a different name that better describes
what this function is actually doing (spoiler: it is not only checking
whether the given user is part of the specified group).
2022-12-15 20:09:17 +01:00
Robert Adam
eb01d1b6d6
Merge PR #5967: BUILD(overlay): build overlay on Linux and FreeBSD without client flag 2022-11-29 13:07:31 +01:00
Carlo Castoldi
bd1209153f BUILD(overlay): build overlay on Linux and FreeBSD without client flag 2022-11-29 11:41:20 +01:00
Robert Adam
1424553bec
Merge PR #5980: TRANSLATION: Update translation files 2022-11-28 16:08:43 +01:00
Robert Adam
8bc095e2cc TRANSLATION: Update translation files 2022-11-28 15:14:26 +01:00
Robert Adam
9672f7bb7e
Merge PR #5925: Priority speakers and temporary channels
This MR contains two changes:

1. Clear the priority speaker flag on channel switch

2. The priority speaker should either be saved/loaded or cleared when a user enters/leaves a channel #5334)
Change how the temporary channel mute/deaf permission check is performed. Also: Allow priority speaker in temporary channels.

Fixes #5334
Fixes #1877
2022-11-28 14:10:28 +01:00
Robert Adam
fc4db91fe1
Merge PR #5948: FEAT(server): FEAT(server): Flag bot connections
FEAT(server): Flag bot connections

This commit introduces a new flag that connecting clients can use to
tell the server they are connecting to that they consider themselves bot
clients. This information can then be used (as is the case for the
official server implementation) to e.g. correct the reported user count
on the server to only include "real" clients - aka: no bots.

Fixes #5461
2022-11-27 21:00:40 +01:00
Robert Adam
9c33451183
Merge PR #5923: Channel filter improvements
Closes #1737
Closes #1830

This MR contains two changes:

    Add the "Channel Filter" toggle action to the menu bar especially for use in the minimal view as specified in 

Missing context menu entry to toggle channel filtering in minimal view. #1737
Implement a "channel pin" flag as specified by
Show channel when filtering #1830. I was almost done when I realized that @hacst already had a merge request going some time ago... (Add 'always visible' channels to filtering mechanism #2612) We implemented this in a very similar way and I added them as a co-author.
2022-11-27 19:18:35 +01:00