Commits on Feb 16, 2017
  1. Merge PR #2853: Transifex translation update

    mkrautz committed on GitHub Feb 16, 2017
Commits on Feb 14, 2017
  1. Merge PR #2847: Transifex translation update

    mkrautz committed on GitHub Feb 14, 2017
Commits on Feb 13, 2017
  1. Merge PR #2844: Add support for custom "protoc" path and scan using "…

    …which" on Linux
    mkrautz committed on GitHub Feb 13, 2017
Commits on Feb 12, 2017
  1. Merge PR #2840: Add travis configuration for linux proof builds

    mkrautz committed on GitHub Feb 12, 2017
Commits on Feb 11, 2017
  1. mumble_exe: when using a versioned root, set the CWD to it.

    Previously, we always used the directory holding mumble.exe
    as the working directory.
    This commit changes that to use the versioned root directory
    as the working directory -- if we're using one.
    When not using a versioned root directory, the old behavior
    is kept intact.
    This is primarily done to work around mumble-voip/mumble#2837,
    where, when loading mumble_app.dll on Windows 7, the search order
    for ucrtbase.dll seems to be using the "Standard Search Order for
    Desktop Applications" instead of the "Alternate Search Order for
    Desktop Applications", as it should when we specify
    For context, see the following MSDN page:
    Changing the working directory to the versioned root path allows
    the Universal CRT to be correctly loaded -- via step 5 of the "Standard
    Search Order for Desktop Applications" if SafeDllSearchMode is on --
    despite this weird behavior from the system.
    Works around mumble-voip/mumble#2837
    MS Connect issue:
    mkrautz committed Feb 11, 2017
Commits on Feb 9, 2017
  1. installer: don't ship dbghelp.dll anymore.

    Only older versions of dbghelp.dll are redistributable by themselves.
    Newer versions only allow redistribution via MSI files, which are
    useless for us.
    To sidestep this problem, we'll simply go back to relying on the OSes
    version of dbghelp.dll. Shipping an outdated version of dbghelp.dll
    isn't sensible. We're better off allowing Windows 10 to use a modern
    (its own) version of dbghelp.dll than using a year-old version.
    To give some context on how we use dbghelp.dll:
    In Mumble, we use dbghelp.dll for writing our Minidumps.
    In Murmur, Ice uses it for symbolicating stack traces in
    Ice exceptions.
    mkrautz committed Feb 9, 2017
  2. Merge PR #2830: fix protoc invocation for out-of-tr…

    …ee builds
    mkrautz committed on GitHub Feb 9, 2017
  3. Merge PR #2833: Transifex translation update

    mkrautz committed on GitHub Feb 9, 2017
Commits on Feb 8, 2017
  1. Merge PR #2828: Fix paths

    mkrautz committed on GitHub Feb 8, 2017
Commits on Feb 7, 2017
  1. Murmur: fix bad interaction with QDBus and fork().

    Qt 5.6 changed QDBus to use a thread, QDBusConnectionManager,
    for managing DBus connections.
    This caused a bad interaction with Murmur. It turns out that, prior
    to this commit, the QDBusConnectionManager in Murmur was launched at
    program start, because of a global static QDBusConnection in DBus.cpp.
    This meant that there would be a QDBusConnectionManager thread around,
    waiting to manage DBus connections. ...Until Murmur calls fork().
    After fork()ing, the QDBusConnectionManager thread is gone -- fork only
    keeps a 'main' thread, and isn't generally compatible with multi-threaded
    Fortunately, the static global QDBusConnection (MurmurDBus::qdbc) was
    only initialized this way because it worked in the past. Also, because
    QDBusConnection has no default constructor, the 'qdbc' QDBusConnection
    was statically initialized as a QDBusConnection to 'mainbus' on each
    program launch. This wasn't strictly necessary -- it was only done because
    QDBusConnection had no default constructor. However, there is no such thing
    as an 'empty' QDBusConnection, so there not being a default constructor
    does make sense.
    To avoid the static global QDBusConnection, this commit changes MurmuDBus::qdbc
    from a value to a pointer.
    This allows us to defer the creation of the QDBusConnectionManager thread
    until the first 'real' QDBusConnection is created -- after Murmur has forked.
    This avoids the global static 'fake' QDBusConnection, and ensures the
    QDBusConnectionManager thread is created after Murmur has forked.
    Additionally, this commit also moves the registration of the 'MetaDBus'
    object into the '!Meta::mp.qsDBus.isEmpty()' check in main.cpp.
    This ensures the MetaDBus object is only registered if the user has
    enabled DBus in murmur.ini. Without this change, the code would be
    dereferencing a null MurmurDBus::qdbc.
    Fixes mumble-voip/mumble#2820
    mkrautz committed Feb 7, 2017
  2. 3rdparty/minhook-src: update MinHook to v1.3.3.

    Primarily to get MinGW support.
    mkrautz committed Feb 7, 2017
  3. Merge PR #2825: Revert 91dc3d3 ('Move counter variable in processMsg …

    …into Opus condition.').
    mkrautz committed on GitHub Feb 7, 2017
  4. Revert 91dc3d3 ('Move counter variable in processMsg into Opus condit…

    This comit (full SHA-1 is 91dc3d3) is
    obviously flawed.
    So revert it.
    mkrautz committed Feb 7, 2017
Commits on Feb 6, 2017
Commits on Feb 5, 2017
  1. installer: ship app-local copies of UCRT DLLs.

    MSVC2015 uses a new CRT called the Universal CRT.
    This CRT is distributed in different ways, depending on your
    For Windows XP, the official distribution is a VCRedist installer.
    (Or, for Windows XP only -- merge modules).
    For Vista through 8.1, UCRT is distributed via Windows Update.
    For Windows 10, it's shipped as part of Windows.
    This commit amends our installer to install an app-local copy of
    the Universal CRT. This is the sanest way for us to distribute the
    Universal CRT across all supported targets.
    Even if we could drop Windows XP support, the fact that earlier
    Windows versions deploy the Universal CRT through Windows Update
    makes it a hard pill to swallow. People's hacked up machines might
    not be able to get the update from Windows Update for whatever reason.
    (Maybe they disabled the Windows Update service for performance reasons,
    because a guide on the web told them to?)
    So, for now, this is what we'll do. Perhaps it makes more sense to
    statically link the UCRT instead of this massive soup of DLLs. But
    this is a quick fix to keep our snapshots going until we can work
    out the details for statically linking UCRT.
    Note: Because Murmur is outside the versioned root-dir, we ship a
    separate CRT copy for Murmur. Now that we have to ship the UCRT as
    well, that's suddenly a lot more files we'll have to carry. That's
    also an unfortunate side-effect of the UCRT. But if you look at it
    from the perspective that shipping the VCRUNTIME+UCRT on MSVC2015
    "the same thing" as shipping MSVCRT on MSVC2013, we're not really
    doing anything much different. Except, we're being "punished" by
    the fact that Microsoft decided to split up the CRT into tiny pieces.
    Future work: Ideally, we wouldn't include these .wxi files in the
    repo, and instead depend on being run before building
    the installer. However, that would require buildenv changes, and
    require us to redeploy buildenvs, which takes time. To get the UCRT
    fix out into a snapshot, let's add them to the repo for now, and we
    can clean it up later.
    mkrautz committed Feb 5, 2017
  2. installer: use WiX from buildenv.

    This uses the mechanism documented at
    to use a local copy of WiX instead of using the WiX MSI package.
    Previously, we required people to install WiX globally.
    That's yet another tedious dependency required in order to build Mumble.
    We'll now be distributing WiX in our buildenvs, so tell our .wixproj
    to use that version.
    mkrautz committed Feb 5, 2017
  3. LCD: drop workaround for Qt >= 5.6.2.

    This drops the workaround we added in c04aa4e (see also
    mumble-voip/mumble#2429). There was a Qt regression in
    early 5.6 versions that caused our previously working
    monochrome bitmap drawing code to break.
    To be fair, our original code was not exactly correct
    per the Qt docs, but it did produce correct results before
    Qt 5.6.
    Qt accepted the bug as a regression, and restored the old
    behavior, so we can now keep using the old behavior.
    We should re-visit this soon, because the drawing code
    isn't actually correct according to the Qt docs.
    But it works. At least until Qt 6.
    Fixes mumble-voip/mumble#2815
    mkrautz committed Feb 5, 2017
Commits on Feb 4, 2017
  1. MumbleApplication: introduce getenvQString and use it in applicationV…

    When built against the MSVC2015 CRT, we can't mix-and-match non-wide and
    wide environment variables anymore.
    Prior to this commit, MumbleApplication::applicationVersionRoot() used
    Qt's qgetenv().
    However, because of our change to MSVC2015, we can't use Qt's function
    Instead, we introduce getenvQString (a static function, local to
    MumbleApplication -- for now). This function uses _wgetenv_s on
    Windows to retrieve environment variables (expecting that they're all
    UTF-16). On non-Windows systems, it uses getenv (and expects keys and
    values to be UTF-8).
    Fixes mumble-voip/mumble#2806
    mkrautz committed with hacst Feb 3, 2017
Commits on Feb 3, 2017
  1. Merge PR #2807: Fix usage of QFileInfo for Qt4

    mkrautz committed on GitHub Feb 3, 2017
Commits on Feb 2, 2017
  1. Merge PR #2790: mumble_plugin_win32_ptr_type.h: Prevent redefinition …

    …of "NOMINMAX"
    mkrautz committed on GitHub Feb 2, 2017
Commits on Feb 1, 2017
  1. Refactor Server::supportsDualStack().

    The current implementation tries too hard to avoid duplication
    of very few lines of code.
    Instead, use two separate code paths, one for Windows, one for
    Unix-like sytems.
    This makes it more readable, and allows us to handle system-specific
    quirks much easier. For example, SOCKET is unsigned on Windows, and
    comparing it to -1 technically works (at least for two's complement
    machines), but causes a compiler warning for a signed vs. unsigned
    mkrautz committed Feb 1, 2017