In a Qt application, the QApplication object should be the first QObject
that is created. However, the `Meta` class used to have a static member
called `mp`, which means that this member gets initialized _before_
main() runs and therefore before the QApplication is created.
This has caused an "Invalid nullptr in QObject::connect" warning
somewhere in Qt's internals (since the move to Qt 6). The impact of this
warning is unclear at this point.
This commit makes the mp parameter a std::unique_ptr that gets
explicitly initialized in the main function (more or less right after
the QApplication object is created). This guarantees that the MetaParams
object does not get created before the QApplication object, fixing the
observed warning.
It is worth noting that we do have a couple of other static QObject
variables in the main translation unit, but these seem to be
inconsequential (at least they don't seem to trigger a similar warning).
Fixes#6669
The DBus RPC interface on the server has been deprecated for a while and
has also not been maintained for even longer. Therefore, the API has now
been removed completely.
Instead, users shall make use of the ZeroC Ice interface as a means to
do RPC.
Fixes#6548
Drops icons/flags.
Deletes mention from license dialog, and helper script.
Adds submodule to 3rdparty/flag-icons.
Adjusts CMakefile to pick up new path.
Adds license (MIT) to license dialog.
Fixes#6411
The script had the following issues:
* Typo in the match regex string
* Wrong enumeration of match groups
* No support for commits without merge commit
I also added a hotfix for backport commits which
did not conform to the pattern (sorry)
Previously, tarballs created from our script would
contain user/group info from the host system.
This could be verified by running:
``tar -tvf <file>``
This commit adds an explicit tarinfo filter
to drop username and groupname automatically.
so that mumble_flags.qrc builds in a reproducible way
in spite of non-deterministic filesystem readdir order
See https://reproducible-builds.org/ for why this is good.
The advantage of this script is that contrary to git archive it is capable of including submodules into the archive.
All files tracked via git are included in the archive (at the given revision) except for hidden files (files and folders starting with a dot)
The advantage of this script is that contrary to git archive it is
capable of including submodules into the archive.
All files tracked via git are included in the archive (at the given
revision) except for hidden files (files and folders starting with a
dot)
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).
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
Scripts like these should be maintained in
https://github.com/mumble-voip/mumble-scripts and not in the main repo.
Since these scripts have not been touched in ages, it is assumed that
they are mostly outdated anyway.
This appears to be the attempt at a hand-crafted system to start, stop
and monitor a Mumble server. However, on modern systems this is taken
care of by systems like systemd, so we probably don't need this script
anymore.
After researching on this, I can't find what this file is actually good
for. The apparent use of registering Mumble as a protocol handler for
mumble:// URLs seems to be superseded by our .desktop file, which seems
to be the more modern approach to this.
Previously we were using a cpp application for generating the mumble.ico
file. However, this should really be a script's job, which is why we
replaced the cpp code with a corresponding Python implementation.
Sometimes backport commits still have a "Merged PR xxx" part in them,
which we have to strip before processing the message. This is exactly
what this commit adds to the existing changelog script.
Previously the script would assemble the query URL by taking the
individual parameters literally. However, for certain inputs this could
lead to an invalid URL, resulting in an error 400 (Bad Request) when
attempting to make this query to the server.
In order to avoid these situations, the parameters are now properly
encoded (quoted) before being inserted into the query URL. Thus, we
ensure to always produce valid URLs.
Previously Mumble was using a custom binary format for transmitting data
via UDP (mainly audio). This has worked for a long time but besides
being inconvenient for 3rdParty implementors (they had to manually
re-implement encoding and decoding support for this format) this format
was not very flexible and changes to the data format were very hard.
In order to improve on this situation, this commit introduces changes
that allow to use Protobuf for the UDP messages as well (it's already
used for TCP). With that it should be relatively easy to extend/change
the UDP packet formats in the future and 3rdParty implementors can now
simply use Protobuf to handle decoding/encoding packets for them (much
less work and much less prone to errors).
Since the new Protobuf format is incompatible with the old UDP format,
this commit also includes support for dealing with older clients or
servers that don't recognize the new protocol yet. That way the new
protocol format is only used if both the client and the server are
recent enough to have it implemented (assumed to be the case >=1.5.0).
Note also that the server will make sure that clients using the old and
the new format can seamlessly communicate with one another.
Therefore, on the surface it should not be noticeable to the user which
protocol is currently used.
Note also that the new protocol format only supports Opus as an audio
codec. If one of the legacy codecs is to be used, the legacy packet
format has to be used as well. However, all codecs except for Opus will
be removed from Mumble in the future anyway.
Fixes#4350
NOTE: When this gets merged, all clients and servers claiming to support the protocol version 1.5.0 that do not include these changes, will become incompatible with the ones that do integrate these changes. This is important for everyone closely following our upstream master branch. A simple update to the latest code changes (including the changes from this PR) should be enough to restore full compatibility.
All servers and clients of version < 1.5.0 will be not affected by this as this PR is completely backwards compatible with those clients.