Age | Commit message (Collapse) | Author |
|
|
|
|
|
dialog buttons (#5226)"
|
|
repository (#5229)"
|
|
|
|
Some dialog button texts, such as "Cancel" weren't translated as they
are part of Qt's internal translations. This fixes that.
|
|
Upon switching to CMake, we kept using our own fork for the repository because a few fixes for the build were needed.
Now that the upstream repository works correctly as submodule, we can fetch from it directly.
Please note that tests provided in the Opus repository are not built anymore.
Fixes #5223.
|
|
The check for configured network interfaces at startup has a problem
that if IPv4 is not configured for some reason, Mumble will bind to
IPv6-only socket, and will not be available over IPv4 until manually
restarted.
There's no harm binding to the "any" IPv6 address with IPV6_V6ONLY set
to 0 even if there're no assigned addresses of either address family.
The bind will succeed either way, and will accept connections on any
new address configured in the system regardless of the address family.
QHostAddress::Any tries to setup an AF_INET6 socket with IPV6_V6ONLY
set to 0, and falls back to AF_INET in case it's unavailable.
However, it will only happen if IPv6 is completely disabled on the
system, which is a rare configuration, but nevertheless it will fall
back gracefully.
Fixes #5208
|
|
|
|
After 3dc7b00d0919cf2400071deba54ff7f64ee3d9ea, shortcuts saved in the old format would just show up as "Unknown" and not work.
This commit implements a proper migration mechanism, making the shortcuts work without any manual steps.
Mice, keyboards, Xbox (XInput) controllers and Logitech G-keys devices are supported.
Unfortunately shortcuts will have to be registered again for DirectInput devices such as controllers.
The migration is performed silently, unless not 100% successful.
In that case a message box appears informing the user about how many shortcuts could not be migrated.
Please note that running a version of Mumble that uses the old format after the migration results in corruption.
As a result, shortcuts would have to be registered again.
Fixes #5025.
|
|
|
|
PR #5161 introduced a new facet to the synchronization of plugin API
calls in order to avoid the possibility of running into a deadlock.
However the mechanism of using timeouts had the flaw that the dispatched
execution of the API call would access the promise object which lives on
the Stack of the calling wrapper function. In case of a timeout though
that wrapper function may exit, before the actual API implementation
has run. Thus as soon as that function will end up running, it will
access memory that no longer exists as the referenced promise object has
gone out of scope already.
This commit fixes this by creating the promise on the Heap instead and
using a shared pointer on it such that whichever function is the last to
exit, it the one that frees the resource. This guarantees that the
promise is not destructed before it is no longer needed.
|
|
PR #5159 removed a few seemingly unneeded waits on audio system
initialization which drastically sped up Mumble's startup. However as it
turns out for PulseAudio some waiting is actually required as the system
initializes asynchronously but we require the knowledge about the init
result.
Instead of adding an arbitrary wait time again though, this commit adds
a mechanism that waits exactly as long as necessary for the init to be
completed and then continues. That still cuts down the waiting time
tremendously when comparing with the previous (arbitrary) wait time of 1
second.
Fixes #5181
|
|
PR #5152 overhauled the code for the plugin installer such that it
can completely unload a plugin before attempting to overwrite it.
However when the installer is called from the updater, that doesn't work
since the installer itself was still holding a handle to that plugin,
preventing it from unloading. Therefore this commit makes sure that the
installer releases its handle before calling the installer.
Fixes #4946
|
|
The code that was used to create the tray icon was perfectly fine. The
issue was that the icon that was set was invalid because Qt did not find
the respective resource (which for some reason leads to the tray entry
not being shown at all).
The issue was that auto-RCC was not enabled for the server. This is
probably because usually the server doesn't need it, except on Windows
where we have that tray icon. While the respective resource files were
present and added as needed, the lack of this property caused Qt to
never process the resource file and thus thew icon was always missing.
Fixes #4930
|
|
This causes a 1 second startup delay per Audio Backend, which at the
moment means 3 seconds on Linux.
Fixes #5157
Fixes #5022
|
|
|
|
The first issue was that the old plugin would simply get overwritten
without at least warning the user that such a thing will take place.
With this commit this is still not guaranteed as plugins can be
installed in different directories in which case no warning is emitted
(the user will end up with two versions of the plugin installed in
parallel).
The second issue was that if a plugin was loaded while it is being
updated, on some OS (e.g. Windows) the corresponding library file is
locked and can thus not be overwritten. Therefore plugins are now
explicitly cleared before an overwrite is attempted.
|
|
Using the API functions from outside the "main thread" would cause them
to block until the request can be processed on the main thread. This
could easily produce a deadlock if used without caution.
These changes add a timeout for this waiting turning preventing
deadlocks because the calling thread won't be blocked indefinitely. In
case of a timeout, a special error code is returned.
|
|
13b85a3ae2580636c2a3171e1ab09a608f19e838 introduced a new feature for
which it is required to remember when the last user disconnected from a
channel. However in the upgrade path that variable was part of the query
but not of the insert statement.
|
|
This reverts commit 2237899178c83b043bfa902e523eb2e705182be6.
The correct approch seems to be to add the value into the INSERT
statement instead of excluding it from the query one.
|
|
The implementation for the Ice setACL function did not take a write lock
even though it writes to objects that are owned by the main thread
(thereby violating the synchronization scheme in the server code).
Due to it deleting Group objects this is strongly suspected to have
caused a Segfault crash of the server when the voice thread would check
whether a user has permission in a channel while the ACL for that is not
cached. The Segfault then occurs in Group::isMember when dereferencing
the Group pointer (which got deleted in the Ice function).
|
|
Inside ServerDB there was one SQL statement that reads values off from
one table and writes them into another one. However while doing so, it
(in contrast to the other statements doing the same for other DB
versions) also queries the `last_disconnect` value. This values is
unused in the INSERT statement though and therefore reading it in the
first place seems to be pointless.
|
|
|
|
Previously the plugin installer attempted to select the correct plugin
binary by its file extension but it turns out that this is not a unique
choice (e.g. .so is supported on macOS and on Linux).
Therefore this commit introduces a mandatory manifest file that is to be
present in plugin bundles that contains the mapping for which binary to
use on which OS and for which architecture.
Because a plugin bundle now has to follow such a strict format, it is
now also mandatory for the bundle to have the file extension
.mumble_plugin (previously .zip was allowed as well).
|
|
requestLocalUserTransmissionMode (#5113)" to 1.4.x
Backports the following commits to 1.4.x:
FIX(client, plugin-api): requestLocalUserTransmissionMode (#5113)
|
|
This particular API function was implemented to only set the respective
settings variable. However this would not notify any other code part
about the change resulting in a potential inconsistency between the UI
and the actual settings.
Therefore the implementation now delegates the actual setting of the
transmission mode to MainWindow::setTransmission mode that takes care of
emitting the appropriate signal and informs the user about a change in
transmission mode.
|
|
The channel count and sample rate parameters for this function were
passed in reverse order (compared to the API spec). This would cause
plugins using this callback to calculate buffer sizes (sampleCount *
channelCount) to be vastly too high and therefore they most likely tried
accessing the output buffer at indices outside its actual range.
|
|
In eabfbab403e6ba10219c262518899db5a60d0c1e the assignment of the
uiSession variable of any given client was delayed into the
Server::msgAuthenticated function in order to prevent non-Mumble
connections to be counted as users.
However the assignment of the session ID was moved so far down that
there is now previous code that already depends on its value and is now
using an uninitialized (or at least wrong) value for the session ID.
This commit fixes this by assigning the session ID very early in the
Server::msgAuthenticated function, making sure that the code before it
does not reference the session ID already.
This bug could have had all kinds of side-effects but one of them was
that users were always presented with the "Unable to find matching CELT
codecs with other clients." message upon connecting to the server.
Fixes #5051
|
|
On Windows the PluginInstaller was unable to extract certain zip files.
As it turns out the issue was that the filestreams were not opened
in binary mode which threw Poco off in certain situations.
Therefore the fix simply is to use binary mode when working with
these file streams. Note that the used Poco filestream class operates
in binary mode by default.
|
|
There were a few types left that were not prefixed with "Mumble" in one
way or another. In order to avoid name clashes, this was now changed.
Especially enum values are now also prefixed. This is because these are
not enum classes (C doesn't know those) and as such the enum values are
used without a namespace (thus they are effectively global names).
Furthermore the macros STATUS_OK and VERSION_UNKNOWN were turned into
constant variables in order to use the preprocessor as little as
possible.
|
|
The "class" was only used as a namespace anyway. And while we're on it
the entire thing was renamed to "Version" instead of "MumbleVersion".
|
|
The overlay binaries were expected to be present in any case when the
installer was built. Same goes for the g15-helper binary.
This commit makes sure these binaries are only included if the
respective feature was actually built before.
Fixes #5058
|
|
The AudioOutputPtr ao holds a reference to the audio output. Calling
wipe() only clears the buffers, but the reference still exists.
When we call restartAudio() without ao going out of scope, then
Audio::stop() will loop endlessly as we are waiting for all audio output
references to clear.
We fix this deadlock by explicitly resetting the shared_ptr ao, such
that it doesn't hold a reference anymore when restartAudio() is called.
Fixes #5081
|
|
If we initialize the stream with 0 channels, the call to connect() will
still succeed. In that case the pipewire callback will crash due to zero
division as chunk->stride and pwo->iChannels will be zero.
We fix this by explicitly initializing the channel number with a sane
value.
Fixes #5075
|
|
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 99.9% (2044 of 2045 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
|
|
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Chinese (Simplified) translation
Currently translated at 100.0% (2045 of 2045 strings)
Co-authored-by: CA_GA_64 <xjdzch@126.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
|
|
Currently translated at 100.0% (2045 of 2045 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
|
|
Currently translated at 99.9% (2043 of 2045 strings)
Co-authored-by: Game one <denis.melnyk.2006@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ru/
Translation: Mumble/Mumble Client
|
|
Currently translated at 13.7% (281 of 2045 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Tomás Correia Marques <tomasmanuelcorreiamarques@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/en_GB/
Translation: Mumble/Mumble Client
|
|
Currently translated at 81.4% (1665 of 2045 strings)
TRANSLATION: Update Hungarian translation
Currently translated at 79.7% (1630 of 2045 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: ViBE <vibe@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/hu/
Translation: Mumble/Mumble Client
|
|
Currently translated at 99.9% (2043 of 2045 strings)
TRANSLATION: Update German translation
Currently translated at 99.9% (2043 of 2045 strings)
TRANSLATION: Update German translation
Currently translated at 99.8% (2041 of 2045 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Robert Adam <dev@robert-adam.de>
Co-authored-by: VfBFan <drop0815@posteo.de>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/de/
Translation: Mumble/Mumble Client
|
|
Currently translated at 100.0% (2045 of 2045 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/tr/
Translation: Mumble/Mumble Client
|
|
Currently translated at 87.7% (1795 of 2045 strings)
TRANSLATION: Update Korean translation
Currently translated at 85.5% (1749 of 2045 strings)
TRANSLATION: Update Korean translation
Currently translated at 83.1% (1701 of 2045 strings)
TRANSLATION: Update Korean translation
Currently translated at 81.5% (1668 of 2045 strings)
TRANSLATION: Update Korean translation
Currently translated at 81.4% (1665 of 2045 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Linmalu(린마루) <gkdwns0103@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ko/
Translation: Mumble/Mumble Client
|
|
Currently translated at 93.0% (1903 of 2045 strings)
TRANSLATION: Update French translation
Currently translated at 93.0% (1903 of 2045 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Maëva Calmettes <maeva.c@protonmail.com>
Co-authored-by: bendem <online+weblate.org@bendem.be>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/fr/
Translation: Mumble/Mumble Client
|
|
The produced binary as well as the used cmake target was renamed from
"murmurd" and "murmur" respectively to "mumble-server".
The installer code was adapted accordingly.
|
|
instead of 420x270"
Backport of #5029
|
|
push-to-muted"
Backport of #5038
|
|
The "bPosTest" variable indicates whether we're in the middle of a test.
It causes the user's direction vector to freeze so that it always "looks" straight ahead.
When completing the wizard, accept() is called and thus the variable is set to false again.
However, when the wizard is closed prematurely, reject() is called instead.
|
|
|