Commit Graph

8548 Commits

Author SHA1 Message Date
Davide Beatrici
69dfdd2135
Merge PR #4494: FEAT(client, server): use native mDNS/DNS-SD API on Windows, if available 2020-09-23 01:04:07 +02:00
Robert Adam
66c4838860
Merge pull request #4502: FIX(client, ui): Make setting take effect immediately
The setting for keeping the local user always visible in the TalkingUI
was not put into effect immediately if the local user didn't happen to
be displayed in the TalkingUI at the time of applying the settings.
Instead the effect was only visible after a re-connect or after having
changed the local user's TalkingState so that it was added to the UI via
that route.

The fix was simply to add the user if it is currently not present but is
asked to be shown permanently.
2020-09-22 19:40:27 +02:00
Robert Adam
e0ed9b792e
Merge pull request #4501: FIX(client, ui): Container prio never sinks in TalkingUI
The way TalkingUIContainer::updatePriority() worked prevented a
container's priority to decrease (even thought the entry because of which
the priority initially increased is no longer contained).

To fix this, the referenced function will now simply reset the cached
priority to the lowest possible value before performing the actual
checking.
2020-09-22 19:01:32 +02:00
Robert Adam
2ed49c9a21
Merge pull request #4500: FIX(client, ui): Don't move TalkingUI off-screen
On Linux (KDE Plasma) Qt (or rather the window manager) won't move a
widget off-screen so there was no need to check whether the position
saved for the TalkingUI was actually on-screen or not.
The situation seems to be a different one on Windows though. There it
can happen that the UI is moved off-screen. Once that happens the user
is more or less incapable of bringing it back again (as the saved
position won't get cleared).

In order to mitigate this issue, it is now (thoroughly) checked whether
or not the TalkingUI will end up on-screen or not.
2020-09-22 17:42:51 +02:00
Robert
eafc643103 FIX(client, ui): Make setting take effect immediately
The setting for keeping the local user always visible in the TalkingUI
was not put into effect immediately if the local user didn't happen to
be displayed in the TalkingUI at the time of applying the settings.
Instead the effect was only visible after a re-connect or after having
changed the local user's TalkingState so that it was added to the UI via
that route.

The fix was simply to add the user if it is currently not present but is
asked to be shown permanently.
2020-09-22 16:52:39 +02:00
Robert
dee567fb24 FIX(client, ui): Don't move TalkingUI off-screen
On Linux (KDE Plasma) Qt (or rather the window manager) won't move a
widget off-screen so there was no need to check whether the position
saved for the TalkingUI was actually on-screen or not.
The situation seems to be a different one on Windows though. There it
can happen that the UI is moved off-screen. Once that happens the user
is more or less incapable of bringing it back again (as the saved
position won't get cleared).

In order to mitigate this issue, it is now (thoroughly) checked whether
or not the TalkingUI will end up on-screen or not.
2020-09-22 16:43:23 +02:00
Robert
63104a3aa2 FIX(client, ui): Container prio never sinks in TalkingUI
The way TalkingUIContainer::updatePriority() worked prevented a
container's priority to decrease (even thought the entry because of which
the priority initially increased is no longer contained).

To fix this, the referenced function will now simply reset the cached
priority to the lowest possible value before performing the actual
checking.
2020-09-22 16:38:12 +02:00
Robert Adam
c5422d6bbe
Merge pull request #4499: FIX(client): Setting not saved
The showVolumeAdjustment setting was saved twice but wasn't loaded
anywhere.
2020-09-22 09:40:34 +02:00
Robert
41c1af4c08 FIX(client): Setting not saved
The showVolumeAdjustment setting was saved twice but wasn't loaded
anywhere.
2020-09-22 08:53:26 +02:00
Davide Beatrici
ee731f8405 FEAT(client, server): use native mDNS/DNS-SD API on Windows, if available
This allows:

- The client to find servers advertized via zeroconf without the need for Bonjour to be installed.
- The server to advertize itself via zeroconf without the need for Bonjour to be installed.

The Win32 API was introduced in the version 10.0.18362.0 (1903/19H1) of Windows SDK. Before that, only the UWP interface was available (introduced in Windows 10 1507).

This commit was successfully tested on Windows 10 1809, which probably means that the API can be used on previous versions as well.

Even if that isn't the case, it's not a problem: if the code fails to load the required symbols, it falls back to Bonjour.

"Q_OS_WIN64" is used instead of "Q_OS_WIN" because of an issue that appears when certain DNS functions are used in an x86 (32 bit) build: https://developercommunity.visualstudio.com/content/problem/1191345/some-dns-api-functions-cause-lnk2019-errors-in-32.html

This means that until the issue is fixed we can safely use the native mDNS-DNS-SD API only on x86_64 (64 bit).
2020-09-22 07:36:43 +02:00
Davide Beatrici
6a59ae2443 REFAC(client, server): replace "Bonjour" with "Zeroconf", except for 3rdparty
This should make it more clear that we don't include Bonjour-related stuff in our project. We use external libraries depending on the OS.

For compatibility, the server option is still called "bonjour". We should probably add a new option called "zeroconf" and then handle the old one if present in the configuration file.
2020-09-22 07:35:52 +02:00
Robert Adam
42e3752be3
Merge pull request #4497: FIX(client, audio): Loading sample fails silently
If a sound-file failed to load, there is no hint about this in the logs
or anywhere else as it never actually gets ensured that the loading was
successful.

Now and explicit check is performed and if the loading failed, a warning
is printed to the console.

Closes #4492
2020-09-21 10:50:58 +02:00
Robert
82925aab17 FIX(client, audio): Loading sample fails silently
If a sound-file failed to load, there is no hint about this in the logs
or anywhere else as it never actually gets ensured that the loading was
successful.

Now and explicit check is performed and if the loading failed, a warning
is printed to the console.

Closes #4492
2020-09-21 08:38:25 +02:00
Robert Adam
2e85fdc8c5
Merge pull request #4495: BUILD(cmake): Install overlay libs and scripts if enabled
Before the overlay libraries and the related script would not be
installed. Instead the user would have to manually install them on the
system.

Now the overlay libraries are added to the install. The script was fixed
to take into account the correct overlay library names.

Closes: #4471
2020-09-21 08:33:01 +02:00
Sebastian Parborg
a81965dd96 BUILD(cmake): Install overlay libs and script if enabled
Before the overlay libraries and the related script would not be
installed. Instead the user would have to manually install them on the
system.

Closes: #4471
2020-09-20 12:39:47 +02:00
Sebastian Parborg
00d39afd58 FIX(client/overlay): Update unix script to use the current library names
The overlay script did not use the current library names of the overlay
libs. So when installing, the libraries had to be renamed or the script
edited for it to work.
2020-09-19 21:03:07 +02:00
Robert Adam
dccc7c9d14
Merge pull request #4489: FIX(client): Assertion-error for ChannelListeners
PR #4487 introduced a regression in form of a failing assertion in case
a user has stored volume adjustments for a ChannelListener in its DB. In
that case the client would crash as soon as the server-connection has
synchronized.

The issue was caused by a change-event being emitted before the
ChannelListener officially existed. The fix is to simply not send these
events in the first place.
2020-09-19 18:29:12 +02:00
Davide Beatrici
49b2d8509e
Merge PR #4478: Load PulseAudio at runtime 2020-09-17 22:48:44 +02:00
Robert Adam
1e6d14e796
Merge pull request #4490: BUILD(cmake): Display Release build type properly
Previously an empty String would be printed as the build type as the
Release-branch wasn't handled properly in the cmake file.
2020-09-17 16:05:54 +02:00
Robert
72c0577f32 BUILD(cmake): Display Release build type properly
Previously an empty String would be printed as the build type as the
Release-branch wasn't handled properly in the cmake file.
2020-09-17 15:18:18 +02:00
Robert
ae7de7fcc5 FIX(client): Assertion-error for ChannelListeners
PR #4487 introduced a regression in form of a failing assertion in case
a user has stored volume adjustments for a ChannelListener in its DB. In
that case the client would crash as soon as the server-connection has
synchronized.

The issue was caused by a change-event being emitted before the
ChannelListener officially existed. The fix is to simply not send these
events in the first place.
2020-09-17 14:48:24 +02:00
Robert Adam
5d238094ae
Merge pull request #4487: FIX: volume adjustment display
This is a followup on #4439 (and #4436) that fixes 2 issues of that implementation:

    Wrong volume adjustments being displayed for ChannelListeners in certain situations
    MainWindow not updating automatically when the adjustments change
2020-09-15 19:04:15 +02:00
Robert
7c0f319529 FIX(client,ui): MainWindow not updating on vol. adj.
If the local volume adjustment of a client or a ChannelListener was
changed, the MainWindow would not reflect this change until some event
triggered it to refresh (e.g. MouseOver).

With this fix, the MainWindow gets updated immediately when the volume
adjustment is changed (of a client or a ChannelListener).
2020-09-15 17:23:29 +02:00
Robert
c9f686267d FIX(client,ui): ChannelListener vol.-adj. display
The local volume adjustment a user has set for their own
ChannelListeners would be displayed for all listeners in that channel
(even for the listeners of other clients).
This has been fixed by making sure these adjustments are only displayed
for local listeners.
2020-09-15 16:50:29 +02:00
Davide Beatrici
5f73281e1f CI(linux): remove "libpulse-dev" from the list of packages to install
PulseAudio headers are now included in the repository.
2020-09-13 20:12:58 +02:00
Davide Beatrici
b014d7f33e FEAT(client): load PulseAudio at runtime
This effectively removes it as dependency.
2020-09-13 20:12:54 +02:00
Davide Beatrici
bb925f40de
Merge PR #4484: FIX(client): typo in gswForward() causing "WM_" messages not to be injected 2020-09-13 19:34:57 +02:00
Davide Beatrici
c21f59ace7 FIX(client): typo in gswForward() causing "WM_" messages not to be injected
This could also cause a crash, in case gswForward() was called before GlobalShortcutsWin's initialization.

For reference, the bug was introduced in 01db6e219d.
2020-09-12 22:17:32 +02:00
Robert Adam
7ca6cc5d18
Merge pull request #4483: REFAC: Fix warning about boost bind
Compiling with Boost a somewhat recent version of Boost would produce
warnings about deprecated usage of boost::bind.
These have been fixed now.

The warning was

The practice of declaring the Bind placeholders (_1, _2, ...) in the
global namespace is deprecated. Please use
<boost/bind/bind.hpp> + using namespace boost::placeholders, or
define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.

Fixes #4295
2020-09-12 16:13:50 +02:00
Robert
b42100e129 REFAC: Fix warning about boost bind
Compiling with Boost a somewhat recent version of Boost would produce
warnings about deprecated usage of boost::bind.
These have been fixed now.

The warning was
The practice of declaring the Bind placeholders (_1, _2, ...) in the
global namespace is deprecated. Please use
<boost/bind/bind.hpp> + using namespace boost::placeholders, or
define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.

Fixes #4295
2020-09-12 13:46:55 +02:00
Robert
59263838a7 MAINT: Replaced mkwrapper.pl by python script
The old perl script was broken and therefore replaced with a more modern
and flexible Python script.
2020-09-12 13:46:55 +02:00
Robert Adam
0a53864d20
Merge pull request #4480: BUILD(cmake): Don't re-use BUILD_TESTING
We used the BUILD_TESTING variable in order to indicate whether or not
tests shall be built. However this variable is used by e.g. CTest
already and there it had a different default value. Therefore we now
deprecate BUILD_TESTING and use the tests option instead.
2020-09-12 09:00:37 +02:00
Davide Beatrici
557bf8d3f0
Merge PR #4481: BUILD(cmake): Fix plugins install directory 2020-09-11 20:09:27 +02:00
Robert Adam
3d7f8cc4e5
Merge pull request #4444: MAINT: Added clang-format support
The used .clang-format file has been generated using clang-format 6
(shipped with Ubuntu 18.04) and is therefore backwards compatible with
all clang-format versions until v6.
2020-09-11 19:05:51 +02:00
Robert
af7dac72f4 FORMAT: Run clang-format 10 on all C/CXX source-files 2020-09-11 18:29:33 +02:00
Robert Adam
40b28b03c1 FORMAT: Move explanatory comments to own line 2020-09-11 18:28:38 +02:00
Robert Adam
09acf39e4c CI(tests): Increase timeout for Windows tests
The timeout has initially been increased in
8ba0246aad already but we still saw
timeout errors. Thus we increase it once more.
2020-09-11 18:28:38 +02:00
Robert Adam
e6cb50bc49 FIX(code): Wrong include order in opengl.cpp
Furthermore this commit replaced the deprecated time.h header with ctime
2020-09-11 18:28:38 +02:00
Robert Adam
2908aa3acb FIX(code): Missing includes for ancestor.h 2020-09-11 18:28:38 +02:00
Robert Adam
7f98e68159 FIX(code): Windows errors in propvar.h 2020-09-11 18:28:38 +02:00
Robert Adam
c51dca8ab9 FIX(code): MacOS error with celt 2020-09-11 18:28:38 +02:00
Robert Adam
09d4b41d81 FIX(code): Missing includes for PacketDataStream 2020-09-11 18:28:38 +02:00
Robert Adam
459a3bf888 MAINT: Added clang-format support
The used .clang-format file has been generated using clang-format 6
(shipped with Ubuntu 18.04) and is therefore backwards compatible with
all clang-format versions until v6.
2020-09-11 18:28:38 +02:00
Robert
ea63d4f197 BUILD(cmake): Fix plugins install directory
Mumble usually ships with all its plugins in /usr/lib/mumble/* but the
new make install target installs them directly into /usr/lib/*.
This however can lead to certain files being overwritten.

Therefore these paths are changed in order to install these libraries
into /usr/lib/mumble/* again.

Fixes #4477
2020-09-11 18:27:32 +02:00
Robert
42d9f2dab8 BUILD(cmake): Remove unneeded, commented lines 2020-09-11 18:14:05 +02:00
Robert
ee4fb28872 MAINT: Ignore build directory 2020-09-11 18:14:05 +02:00
Robert
a8a857928d BUILD(cmake): Don't re-use BUILD_TESTING
We used the BUILD_TESTING variable in order to indicate whether or not
tests shall be built. However this variable is used by e.g. CTest
already and there it had a different default value. Therefore we now
deprecate BUILD_TESTING and use the tests option instead.

This also fits better with our other options in terms of casing.
2020-09-11 18:13:56 +02:00
Robert Adam
fb0505dc67
Merge pull request #4473: BUILD(cmake): Also install man files
On Unix-systems (Linux & Mac) we now also install our man-files when
the user invokes the generated install target.

Fixes #4472
2020-09-11 17:21:27 +02:00
Robert Adam
d5a059f13a
Merge pull request #4479: BUILD(cmake): Make online tests optional
The TestServerResolver test requires an active internet connection. This
is something that is not really expected when running the tests and will
cause test failure if used without an internet connection.

Therefore this commit makes this test optional. By default this test
will not be built. If you want to enable it (and potential future
tests that require an internet connection), you have to use
-Donline-tests=ON when invoking cmake.
2020-09-11 16:40:39 +02:00
Robert Adam
25ec34ec15 CI: Enable online tests
As the CI does have a working internet connection, it might as well run
all tests regardless of whether they require an internet connection or
not.
2020-09-11 15:51:32 +02:00