Commit Graph

5219 Commits

Author SHA1 Message Date
MumbleTransifexBot
9a2c0ee2b6 Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 33 languages
2015-04-29 20:08:02 +02:00
Lartza
f1eb642588 Add Finnish to languages in Product.wxs 2015-04-29 17:45:02 +02:00
Lartza
b2b3106f07 Fix typo in Finnish translation
Possibly fixing "Error applying transforms." when trying to start the installer in Finnish Windows
2015-04-29 17:44:52 +02:00
Patrick Matthäi
0f072ef055 Add missing LSB Description to the init script.
Fixes SF bug #863 .
2015-04-27 22:58:12 +02:00
Christopher Knadle
e24cfe6cb8 Add Keywords to mumble.desktop to satisfy Lintian warning 2015-04-26 00:02:13 +02:00
Mikkel Krautz
0128e7ddab installer: include both x86 and x64 variants of D3DCompiler_XX.dll.
This is only possible for now because x86 uses the D3DCompiler_43.dll
and x64 uses the D3DCompiler_47.dll.

If we need both to use the same version, we'll need a more complex
directory structure.

But let's tackle that then.
2015-04-23 17:55:56 +02:00
Jordan Cristiano
445cdf0e10 Do not set the Mumble process's priority to High on Windows.
Setting Mumble's priority class higher than the games
is a bad behavior which can cause inconsistency for
input timing in games such as Team Fortress 2.
2015-04-22 22:15:38 +02:00
Ferdinand Thiessen
67ed33f328 Do not show TTS options when speechd is disabled.
A new define, USE_NO_TTS is added. For now, this define
is set when no TTS engine is available on Linux.

Fixes #961
2015-04-22 22:10:18 +02:00
x89
57396fac2f Add systemd service file for Murmur. 2015-04-22 22:03:19 +02:00
MumbleTransifexBot
18e5ecb2c7 Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 32 languages
2015-04-22 22:01:52 +02:00
Mikkel Krautz
2eef8ba0d9 g15helper: force 32-bit x86 compilation.
The g15helper tool links against a static library
provided by Logitech. It is only available for
32-bit x86.

Use our new toolchain mechanism to enable g15helper
to be enabled for x64 builds.
2015-04-22 22:00:29 +02:00
Mikkel Krautz
d63fc6d3cf Use the index variable instead of hardcoding 0 in overlay_exe's GetCommandLineArgs(). 2015-04-22 21:46:55 +02:00
Mikkel Krautz
2379f1fa0e Use non-negative error constants in overlay_exe.h.
The Win32 ExitProcess() API takes an UINT, and we
used to pass negative values to it.

Obviously, those negative values can be represented
just fine in an unsigned integer, but for the sake
of following the API and to avoid future confusion
this commit changes the error constants used by
the overlay helper program to be non-negative.
2015-04-22 21:15:45 +02:00
Mikkel Krautz
9a18c77da1 Re-work command line parsing in the Windows overlay helper executable.
The old parsing was error-prone and hard to read.

We introduce the GetCommandLineArgs() function that returns
he program's arguments as a vector of strings.

Using this function makes the code that processes the arguments
much simpler and easier to understand.
2015-04-22 21:15:30 +02:00
Mikkel Krautz
8e333b3157 OverlayPrivateWin: add qFatal calls for invalid states.
Many of our slots determine which variables to use depending
on the sender of the signal. However, they weren't very careful
about any possible invalid states.

This change makes sure we fail if we're in invalid state.
2015-04-22 21:03:57 +02:00
Mikkel Krautz
a2be91563b Fix missing comma in license header in overlay_exe.cpp. 2015-04-22 21:03:56 +02:00
Mikkel Krautz
b29df64a04 Rename 'missing magic argument' error to 'no arguments' in overlay helper.
Now that the helper takes more than one argument, the
old name is not descriptive enough.
2015-04-22 21:03:55 +02:00
Mikkel Krautz
6c446e4ead Ensure overlay helpers exit when the Mumble process terminates.
Normally, Mumble itself will terminate the helper processes.
But if Mumble crashes, or is manually killed by the user, it
will not be able to terminate the helper processes itself.

In order to fix this, we create a way for the helpers to know
when their parent process has terminated.

This is implemented by creating an inheritable process handle
in Mumble, and passing its value to the helpers.

The helpers then WaitForSingleObject() on the parent handle, and
exits with status code 0 if it the WaitForSingleObject() call
returns successfully.
2015-04-22 21:03:53 +02:00
Mikkel Krautz
b1880294df Add config options for disabling specific overlay helpers.
This adds hidden config options for disabling arch-specific
overlay helpers.

This is useful for people that only want the overlay for a
specific architecture, and also for debugging and troubleshooting
arch-specific overlay problems.
2015-04-22 21:03:52 +02:00
Mikkel Krautz
bb0ccc4629 Add restart limiter to OverlayPrivateWin to avoid bombing the system with process spawns.
We need this in case there's a bug in one of the overlay helpers.
Without this, we would restart a crashed helper immediately. If this
bug is triggered every time the helper is run, we'd get into an infinite
restart loop, potentially making the host computer unresponsive.
2015-04-22 21:03:51 +02:00
Mikkel Krautz
8e31de788f Log overlay helper process errors in OverlayPrivateWin.
OverlayPrivateWin used to only listen for process
termination. Technically, this should work just fine.

This change makes OverlayPrivateWin listen for process
errors as well, by subscribing to the error() signal
of the QProcess of each of our helpers.

The idea is that this could provide us helpful error
messages when troubleshooting issues where overlay
helpers are exiting untimely.
2015-04-22 21:03:49 +02:00
Mikkel Krautz
3018c5e90a Handle WM_CLOSE messages in overlay helper.
When Qt terminates a QProcess via the terminate()
method, it sends a WM_CLOSE message.

However, the overlay helper did not know of WM_CLOSE,
so it would quietly ignore it.

This commit teaches the overlay helper to exit on
WM_CLOSE.
2015-04-22 21:03:48 +02:00
Mikkel Krautz
0e358bff80 Check if the host supports 64-bit processes before attempting to start the x64 helper process.
This change adds a function, canRun64BitPrograms() to OverlayWinPrivate.

If the program is built for x64, the function unconditionally
returns true.

If the program is built for x86, the function uses a call to the
runtime-resolved kernel32!IsWow64Process to determine whether or
not the system is x64 capable.

This functionality is needed to avoid spawning the x64 helper in
case the system cannot support it. Doing so without care, like we
did previously, could be fatal because Mumble immediately restarts
the helper process if it terminates. This would presumably make the
host computer unusable.
2015-04-22 21:03:47 +02:00
Mikkel Krautz
21a1519064 Log path to the executable of the helper process in onHelperProcessExited().
Without this, we do not know which helper process actually exited
when looking at the Mumble log.
2015-04-22 21:03:45 +02:00
Mikkel Krautz
529f76f459 Add the x86_64 Windows overlay to the installer.
This change adds the mumble_ol_x64.dll overlay DLL to
the installer, along with mumble_ol_x64.exe, the new
x64 overlay helper.
2015-04-22 21:03:44 +02:00
Mikkel Krautz
8d3c1f7fcc Add support for using both x86 and x86_64 overlays in Overlay_win.cpp.
This copies the mechanisms we already have in place for
the x86 overlay helper, and uses them for the x64 one.
2015-04-22 21:03:42 +02:00
Mikkel Krautz
d609879695 Use arch-specific shared memory regions in the Windows overlay.
Vtable offsetes is almost all that we store in the shared memory,
and they vary by architecture.

So, don't share the memory between arches. Instead, crate
arch-specific shared memory regions.
2015-04-22 21:03:41 +02:00
Mikkel Krautz
3a6c4f0fee Build two separate Windows overlays - one for x86 and one for x86_64.
This splits fx11 into an x86 variant and an x64 variant.
This creates effects11_x86.lib and effects11_x64.lib, instead
of the single effects11.lib we had previously.

The minhook build is also tweaked. However, since minhook
is only used on x86_64, it is only built for x86_64.
Consequently, the library is still called minhook.lib.

The overlay itself is split into mumble_ol.dll and mumble_ol.exe
for x86, and mumble_ol_x64.dll and mumble_ol_x64.exe for x86_64.
2015-04-22 21:03:39 +02:00
Mikkel Krautz
4a478f7f04 Add force-x86-toolchain and force-x86_64-toolchain to compiler.pri.
These CONFIG options allow a .pro file to select which toolchain
its target should be built with.

To force a target to always be built for x86 (in both x86 and
x86_64 build environments), set CONFIG+=force-x86-toolchain.

The same thing is possible with force-x86_64-toolchain.
2015-04-22 21:03:37 +02:00
Mikkel Krautz
5d41a78690 Add toolchain files. To be used by 32-bit on 64-bit overlay (and vice versa). 2015-04-22 21:03:36 +02:00
MumbleTransifexBot
c43e62a5a0 Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 32 languages
2015-04-21 20:10:30 +02:00
Kissaki
ad0ee22a1a Translation update
Updating 'mumble_en.ts'...
    Found 1600 source text(s) (2 new and 1598 already existing)
    Removed 2 obsolete entries
2015-04-12 00:03:00 +02:00
Kissaki
d0f6b965dd Make script for updating translation strings more robust 2015-04-12 00:02:37 +02:00
MumbleTransifexBot
f6aa3cf95b Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 31 languages
2015-04-11 11:48:59 +02:00
MumbleTransifexBot
9523d0cb5c Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 31 languages
2015-04-06 21:01:51 +02:00
MumbleTransifexBot
381109e0a3 Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 30 languages
2015-03-30 22:13:46 +02:00
Mikkel Krautz
3223c8aae4 Fix translatability of 'Cycle transmit mode' GlobalShortcut log messages.
This also changes the log message to be equivalent to the one used
by the transmit-switcher toolbar item.

This makes the strings more consistent. This should make both users
and translators happy.
2015-03-22 14:26:33 +01:00
Mikkel Krautz
f05e6571ec Fix typo in speex-build.pro: '../speex-build' instead of '../speex-srcbuild'.
The new 'no_include_pwd' CONFIG option introduced by
d855b67d10 showed us this bug.

Before that commit, OS X *did* include PWD in the INCLUDEPATH
by default. Because of that, the equivalent of '../speex-build'
was *already* in the INCLUDEPATH, because 'speex-build' is the
PWD of the .pro file.

Now that we explicitly require the PWD not to be included, our
own inclusion of 'speex-build' must be spelled correctly to work.

This commit fixes that.
2015-03-22 13:16:50 +01:00
Mikkel Krautz
46fc40e12a Fix Qt 4 build of mach-override to build both x86 and x86-64 binaries.
Without explicitly being told, it only builds x86 binaries (32-bit).
2015-03-22 13:14:53 +01:00
Mikkel Krautz
d855b67d10 Fix config.h issues in 3rdparty caused by new INCLUDEPATH handling in Qt 5.4.1.
This commit fixes an issue caused by a new behavior in Qt 5.4.1 that
causes
PWD to be included in the default INCLUDEPATH on Windows with the nmake/VS
generators.

This new behavior was implemented in the following Qt commit:
qtbase/a90bb5b89a - centralize/unify/sanitize INCLUDEPATH "enrichment")
a90bb5b89a

This is a problem because our codecs in 3rdparty use two distinct
config.h files: one for Win32, and one for everything else.

The Win32 variant lives in the Win32 subdirectory of the build root.
The build root is the directory that will be added automatically by
the new Qt behavior. Typically, the build root has a build suffix,
for example 'speex-build'.

The regular config.h - the one for everything else but Win32 - lives
in the buildroot itself.

This new Qt behavior caused the wrong config.h file to be included
on Windows. Since the build root is now in the INCLUDEPATH,
the config.h file that lives in the build root now takes precedence
over the one in the Win32 directory.

To restore the old behavior for the codec builds, we use Qt config
option called 'no_include_pwd'. That explicitly tells qmake to not
include the PWD in the INCLUDEPATH. This restores the previous
behavior on Windows.

The 'no_include_pwd' config option has been around in Qt for a while.
It was not introduced with the aforementioned change to Qt, so it
doesn't break backwards compatibility for us.
2015-03-22 03:57:45 +01:00
Mikkel Krautz
18c359f82a GlobalShortcut_unix: disable evdev by default.
...and gate it behind the hidden 'shortuct/linux/evdev/enable'
config option.

We don't actively want people to use evdev unless
they really have to (as it requires people to change the
permissions of their keyboard device node to be quite wide-open
to be useful).

Our evdev code has also caused problems for users of
Yubikeys and other gadgets that identify themselves as
keyboards. Those problems should be a thing of the past
with this commit.

Fixes #1145
2015-03-10 15:14:42 +01:00
Mikkel Krautz
6c96ab468f Use 'QSsl::TlsV1_0' on Qt 5.0 through 5.3 and allow 'QSsl::SecureProtocols' to be used on 5.4.X.
Some configurations of Qt 5.X explicitly disable deprecated
parts of the API, such as 'QSsl::TlsV1'. To allow Mumble to build
on those configurations, we have to use 'QSsl::TlsV1_0' instead,
like we did in the prior to 71e522f4c4.

This commit also fixes an issue where QSsl::SecureProtocols was only
selected on the base 5.4.0 release, and not subsequent patch releases.
2015-03-19 14:45:53 +01:00
Mikkel Krautz
71e522f4c4 Use QSsl::TlsV1_0OrLater on Qt 5.5 or later, and QSsl::SecureProtocols on Qt 5.4.
We upstreamed a patch for adding the self-explanatory
QSsl::TlsV1_0OrLater, QSsl::TlsV1_1OrLater and QSsl::TlsV1_2OrLater
enums to QSsl.

Before this, we had a patch in our Qt 5.4 build (on Windows), that
changed the meaning of QSsl::TlsV1_0 to mean "TLSv1.0 or later".
However, that approach wouldn't work in the real world (some setups
require very specific TLS versions), so it was dropped in favour of
the TlsV1_0OrLater and friends.

Since our patch is in Qt 5.5, it means that we now can use
QSsl::TlsV1_0OrLater in the Mumble tree (ifdef'd to QT_VERSION
>= 0x050500), and not break anything for distros.

For Qt 5.4, we can rely on QSsl::SecureProtocols, because Qt 5.4
deprecated SSLv3. Thus, in Qt 5.4, QSsl::SecureProtocols means the
same thing as TlsV1_0OrLater means in Qt 5.5.

Why do we need TlsV1_0OrLater and friends if we have
QSsl::SecureProtocols? Because we don't have a guarantee that
QSsl::SecureProtocols will keep having TLSv1.0 as its minimum
version. The current Mumble protocol requires TLS 1.0.

If something comes up in the future that makes us abandon TLSv1.0,
we'll still handshake it. Rejection can happen at the Mumble protocol
level instead, providing a better user experience.
2015-03-18 23:23:30 +01:00
Tim Cooper
f5affcd43b Better log message when a user disconnects from the same channel as the client. 2015-03-18 20:27:58 +01:00
Tim Cooper
9ba92b584e Add user friendly UserRemove message when disconnecting a ghost user.
This commit adds a user friendly UserRemove message
when a username is reused from the same IP-address.
2015-03-18 20:16:43 +01:00
Tim Cooper
dede31785f Add basic support for sending text messages via GlobalShortcuts. 2015-03-18 19:56:30 +01:00
MumbleTransifexBot
2dde4f5a14 Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 30 languages
2015-03-18 19:41:48 +01:00
Joël Troch
122ed92620 OSInfo: update Windows 10 detection due to kernel version change. 2015-03-18 19:39:38 +01:00
Derrick Dymock
a7dd1b7737 Remove __DATE__ and __TIME__.
This removes the date and time macro to attempt to get us to
reproducible builds. While I do like the date and time included, it
doesn't really add that much value to our users.
2015-03-18 19:01:23 +01:00
Tim Cooper
88aefca1dd Fix protocol documentation for RequestBlob in the .proto file.
Fixes #1494
2015-03-17 20:22:30 +01:00