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 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
2cd4635e85 has integrated the theme
submodule into the main repository and by doing so renamed the default
theme from "Mumble" to "Default".
When using no theme (The "None" theme) for the application's style, it
would fail to find the necessary icons though.
This is because the fallback theme that is used in this case was still
referring to the old "Mumble" theme that no longer exists.
This commit fixes the issue by changing the name referenced in the
fallback theme to "Default" again.
Fixes#5086
Instead the theme is now integrated into the main repository as-is. This
facilitates future work on it as we don't have to work across two
repositories.
While we are fiddling with that anyway, I also created an all-new README with (hopefully)
actually useful instructions for how to edit themes.
NOTE: The history of the theme is available in the original repo (mumble-voip/mumble-theme). It was not integrated into this repository as it would flood the git history with a bunch of commits that don't actually change anything.
Therefore we preferred to cut the history out. Should there be the need for that history, the original repo will stay in place dor that reason.
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
The theme is now integrated into the main repository. This facilitates
future work on it as we don't have to work across two repositories.
The theme is overtaken from https://github.com/mumble-voip/mumble-theme
without any modifications to it. All file from there are copied to this
repo now.
The theme's directory was renamed from "Mumble" to "Default" in order to
a) Make the name more descriptive
b) Avoid conflicts updating already checked out workspaces (git would
report conflicts if the new dir was called the same as the old one)
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
As requested in #2556, this commit implements the ability to turn off notifications when the server is hosting a number of clients defined by the user.
Implements #2556
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 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 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
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.
For most images, this results in far better legibility, especially if they contain text, such as memes or web comics - you currently need to squint at the screen often, because it's always sized down to 480x270.
People with windows smaller than that will get a horizontal scroll. Scrolling is still better than having an image that's illegible because it's too small, and small images will never be scaled up this way.
800x600 should be okay since 1920x1080 is a very common desktop resolution by now.
This is a stopgap measure until images can be sized per client.
Push-to-mute requires a constant button press (not togglable), so reminding them that they are muted is not really useful in that case.
The use case that targets is using push-to-mute to talk to another VOIP client (a game for example) with the same people as in the mumble channel. Without this change the user will get the muted cue each time they use push-to-mute.
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.
In short: The lock file(s) for the SQLite DB were being discarded as
soon as fork() was called on Unix systems. Thus the DB connection was a
ghost connection and accessing the DB from somewhere else (e.g. CLI)
would likely cause DB corruption because of missing locks.
Because this only happened when calling fork(), Debug builds are
unaffected since they always run in foreground mode which never calls
fork().
The underlying issue here is that an open SQLite connection should
have a read POSIX lock on the database file. Because we were calling
fork() and then _exit() **after** taking out these locks (which was done
when creating the ServerDB object), the locks were being released.
POSIX locks are super easy to get wrong. This is a nice rant about how
they stink: http://0pointer.de/blog/projects/locking.html
Not having a read lock when you have an open connection probably can
cause all kinds of issues, but with WAL it is particularly bad because
the WAL file is deleted when the last connection closes. The server's
connection to the database is like a ghost connection that nobody
knows about, so any CLI (or other server-external) DB access ended up
deleting the WAL file (i.e. committing everything in it to the main
database). Of course, server still had the WAL file opened. Bad things
happen after that.
The fix is making sure that the ServerDB object is created _after_ the
fork happens so that the locks created by SQLite will not have to cross
the process-boundary, causing them to get deleted basically immediately
after they have been created.
For most images, this results in far better legibility, especially if
they contain text, such as memes or web comics - you
currently need to squint at the screen often, because it's always sized
down to 480x270.
People with windows smaller than that will get a horizontal scroll.
Scrolling is still better than having an image that's illegible because
it's too small, and small images will never be scaled up this way.
800x600 should be okay since 1920x1080 is a very common desktop
resolution by now.
This is a stopgap measure until images can be sized per client.
See also #4830.
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 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 76.0% (1555 of 2045 strings)
TRANSLATION: Update Korean translation
Currently translated at 71.3% (1459 of 2045 strings)
TRANSLATION: Update Korean translation
Currently translated at 68.8% (1407 of 2045 strings)
TRANSLATION: Update Korean translation
Currently translated at 66.8% (1367 of 2045 strings)
TRANSLATION: Update Korean translation
Currently translated at 65.3% (1337 of 2045 strings)
TRANSLATION: Update Korean translation
Currently translated at 63.9% (1308 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
The units of the settings for positional audio were displayed behind the
SpinBox as an additional label.
This commit removes the labels and instead uses the "suffix" field of
the SpinBoxes to display the unit directly in the SpinBox itself.
In principal this also has the potential to fix the issue of the unit
being placed incorrectly when an right-to-left locale is being used as in
that case Qt should put the suffix on the other side.
Note that this has not been verified though.
These two QEvents are overridden by the defines in X11 causing unity build errors.
In file included from ../src/mumble/GlobalShortcut_unix.h:13,
...
... /src/mumble/CustomElements.cpp: In member function 'virtual bool ChatbarTextEdit::event(
... /src/mumble/CustomElements.cpp:234:29: error: expected unqualified-id before numeric constant
234 | if (evt->type() == QEvent::KeyPress) {
...
... /src/mumble/Log.cpp: In member function 'void LogDocument::finished()':
... /src/mumble/Log.cpp:880:37: error: expected unqualified-id before numeric constant
880 | QEvent *e = new QEvent(QEvent::FontChange);
Moved ${SHARED_HEADERS} from PUBLIC to PRIVATE in target_sources for the main CMakeLists.txt
Rational:
"You don't need to make headers public when using target_sources().
It should be very rare that you ever need to use anything by[sic] PRIVATE with target_sources().
One of the few cases where there might be justification for a non-PRIVATE use would be for a header-only (INTERFACE) library.
Outside of that scenario, I would only use PRIVATE." - Craig Scott
"... Thanks, it works now and the compile time has decreased by 80%." - frozen-void
From: "Unity builds fail for Qt based static libraries" https://gitlab.kitware.com/cmake/cmake/-/issues/20489
Similar discussion here: https://discourse.cmake.org/t/target-sources-and-header-visibility/2096
"The PRIVATE and PUBLIC keywords specify where those corresponding sources should be used.
PRIVATE simply means those sources should only be added to myLib, whereas PUBLIC means those sources should be added to myLib and to any target that links to myLib.
...
In practice, sources will almost always be PRIVATE, since they shouldn't generally be added to anything that links against the target.
...
Do not confuse the PRIVATE , PUBLIC and INTERFACE keywords with whether a header is part of the public API for the library or not, the keywords are specifically for controlling which target(s) the sources are added to in this case."
From: https://crascit.com/2016/01/31/enhanced-source-file-handling-with-target_sources/
Error Log:
[237/431] Linking CXX executable tests/TestCrypt
FAILED: tests/TestCrypt
...
... /release/src/shared_autogen/EWIEGA46WW/moc_LogEmitter.cpp:98: multiple definition of 'LogEmitter::metaObject() const';
... /release/src/shared_autogen/EWIEGA46WW/moc_ServerResolver.cpp:98: multiple definition of 'ServerResolver::metaObject() const';
... /release/src/shared_autogen/EWIEGA46WW/moc_LogEmitter.cpp:129: multiple definition of 'LogEmitter::newLogEntry(QString const&)';
... /release/src/shared_autogen/EWIEGA46WW/moc_ServerResolver.cpp:129: multiple definition of 'ServerResolver::resolved()';
... /release/src/shared_autogen/EWIEGA46WW/moc_ServerResolver.cpp:66: multiple definition of 'ServerResolver::qt_static_metacall ...
... /release/src/shared_autogen/EWIEGA46WW/moc_LogEmitter.cpp:67: multiple definition of 'LogEmitter::qt_static_metacall ...
... /release/src/shared_autogen/EWIEGA46WW/moc_ServerResolver.cpp:103: multiple definition of `ServerResolver::qt_metacast ...
... /release/src/shared_autogen/EWIEGA46WW/moc_LogEmitter.cpp:111: multiple definition of `LogEmitter::qt_metacall ...
... /release/src/shared_autogen/EWIEGA46WW/moc_ServerResolver.cpp:111: multiple definition of `ServerResolver::qt_metacall ...
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Polish translation
Currently translated at 100.0% (2045 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 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.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.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.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.9% (2043 of 2045 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Robert Adam <dev@robert-adam.de>
Co-authored-by: Translator <weblate.gledy@aleeas.com>
Co-authored-by: gitgrub <gitgrub.email@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/de/
Translation: Mumble/Mumble Client
Currently translated at 100.0% (2045 of 2045 strings)
TRANSLATION: Update Turkish translation
Currently translated at 100.0% (2045 of 2045 strings)
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: udo pton <udopton@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/tr/
Translation: Mumble/Mumble Client
As the ChannelListener feature was implemented via a Singleton class,
there was only ever a single, global instance keeping track of listeners.
If however there were multiple VServers running from within a single
Mumble server instance, all of them would use the same ChannelListener
instance. That allowed for user-IDs to collide across different VServers
when it came to listener-management.
Thus listeners could appear/disappear seemingly at random whenever a
user on a different VServer (with the same session ID on that server)
changed their listeners.
Fixes#4366
Currently translated at 98.7% (2019 of 2045 strings)
TRANSLATION: Update German translation
Currently translated at 98.7% (2019 of 2045 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Robert Adam <dev@robert-adam.de>
Co-authored-by: Thomas Umbach <thum@vikings.net>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/de/
Translation: Mumble/Mumble Client
As the ChannelListener feature was implemented via a Singleton class,
there was only ever a single, global instance keeping track of listeners.
If however there were multiple VServers running from within a single
Mumble server instance, all of them would use the same ChannelListener
instance. That allowed for user-IDs to collide across different VServers
when it came to listener-management.
Thus listeners could appear/disappear seemingly at random whenever a
user on a different VServer (with the same session ID on that server)
changed their listeners.
Fixes#4366