This commit introduces a new plugin framework into the codebase of the
Mumble client. Note that "plugin" here really refers to a (more or less)
general purpose plugin and is therefore not to be confused with the
previously available positional data plugins (only responsible for
fetching positional data from a running game and passing that to
Mumble).
The plugin interface is written in C, removing the compiler-dependence
the old "plugins" had. Instead plugins can now be written in an
arbitrary language as long as that language is capable of being compiled
into a shared library and also being capable of being C-compatible.
As already indicated a plugin is essentially a shared library that
provides certain functions that allow Mumble to interface with it.
Inside Mumble the so-called PluginManager is responsible for managing
the plugins and relaying events to the respective callbacks. Plugins
themselves can also interact with Mumble on their own initiative by
using the provided API functions.
Fixes#2455Fixes#2148Fixes#1594Fixes#2051Fixes#3742Fixes#4575Fixes#4751
Apparently the first commit (59ae429972)
did not include all files.
Furthermore the used script tended to produce funny results in certain
cases. This has been fixed and as a result thereof a few more changes
were made in this second run.
This commit adds all the missing includes when the PCH header is not used.
Also, some includes are reordered and/or made consistent (e.g. "#include <QtEndian>" -> "#include <QtCore/QtEndian>").
According to Qt's documentation the PCH header doesn't need to be included.
From https://doc.qt.io/qt-5/qmake-precompiledheaders.html:
"To make your project use precompiled headers, you only need to define the PRECOMPILED_HEADER variable in your project file."
"qmake will handle the rest, to ensure the creation and use of the precompiled header file. You do not need to include the precompiled header file in HEADERS, as qmake will do this if the configuration supports precompiled headers."
Places that use the QString() conversion operator
for Channel and ServerUser sometimes end up using
the QString move constructor, which doesn't take
const strings.
Example of an error:
Messages.cpp:1055:65: error: no viable conversion from 'Channel' to 'QString'
log(uSource, QString("Renamed channel %1 to %2").arg(QString(*c),
Fixes C++11 build on OS X (clang/libc++).
If a user is connected and authenticated on a server,
and he/she clicks a mumble:// link that connects him/her
to the current server, he/she is moved to the channel
specified in the link. Previously, this would disconnect
and reconnect the user to the server.
If a user is connected to one server and follows a
mumble:// link to another server, he/she is now
placed in the channel specified in the link.
Previously, the channel they would be moved into
would be the channel they were in on the first
server.
Compare to review comments on 304bf438da
- No longer use channel name for identifying filtered channels.
Switched to using server certificate digest combined with Channel
id which works between servers and with duplicate channel names.
The digest should be replaced by proper server identification soon.
Ideally the client should keep a list which identifies servers
by their address or - if a strong certificate is available - by
certificate email. This can be re-used for tokens and other server
dependent configuration.
- Changed naming from 'hidden' to 'filtered'
- Removed tray menu entry
- Removed global shortcut for channel hiding/showing
Add NestingLimitException to Ice Interface and introduce a new NestingLimit PermissionDenied type.
Addresses #3566322 "ServerDB::deleteServer crashes master"
Fix bug that allowed users to rename channels to otherwise invalid channel names.
The registerPlayer() function now correctly validates its name before performing its actions.
git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@1201 05730e5d-ab1b-0410-a4ac-84af385074fa