mumble/main.pro
Mikkel Krautz 9f1e60507b Move Windows overlay setup and injection to mumble_ol.exe.
This changes Mumble on Windows to run a helper process,
mumble_ol.exe, instead of loading mumble_ol.dll itself.

Prior to this change, Mumble would load mumble_ol.dll and
call PrepareD3D9() and PrepareDXGI() to set up the overlay.
Then, if the overlay was enabled, it would call InstallHooks()
to enable automatic injection of the overlay into new processes.
Similarly, it would call RemoveHooks() to disable automatic
overlay injection when the overlay was disabled in Mmuble.

With this change, Mumble instead runs a helper process called
mumble_ol.exe. This process sets up the overlay (equivalent
to calling PrepareD3D9(), PrepareDXGI() and calling InstallHooks()).
While running, it'll automatically inject the overlay into new
processes, just like Mumble itself did previously. On normal exit,
the helper process calls RemoveHooks() to ensure automatic overlay
injection is disabled.

To enable the overlay, Mumble starts the helper process.
To disable the overlay, Mumble terminates the helper process.
If the helper process dies when it is supposed to be running,
Mumble restarts it to ensure that overlay injection keeps
working as intended.

This change is the first part of enabling both an x86 and an x64
overlay to be active in Mumble at the same time. Since we cannot
load a 32-bit DLL into a 64-bit process (or vice versa), we need
a helper process for each architecture to reach our goal.
Note however that this commit in itself does not make it possible
for Mumble to run both an x86 and an x64 overlay at the same time.
This will come later.
2015-01-15 16:48:27 +01:00

82 lines
1.6 KiB
Prolog

TEMPLATE = subdirs
CONFIG *= ordered debug_and_release
!CONFIG(no-client) {
unix:!CONFIG(bundled-speex):system(pkg-config --atleast-version=1.2 speexdsp) {
CONFIG *= no-bundled-speex
}
!CONFIG(no-bundled-speex) {
SUBDIRS *= 3rdparty/speex-build
}
CONFIG(sbcelt) {
SUBDIRS *= 3rdparty/celt-0.7.0-build 3rdparty/sbcelt-lib-build 3rdparty/sbcelt-helper-build
} else {
unix:!CONFIG(bundled-celt):system(pkg-config --atleast-version=0.7.0 celt) {
CONFIG *= no-bundled-celt
}
!CONFIG(no-bundled-celt) {
SUBDIRS *= 3rdparty/celt-0.7.0-build 3rdparty/celt-0.11.0-build
}
}
!CONFIG(no-opus) {
CONFIG *= opus
}
CONFIG(opus):!CONFIG(no-bundled-opus) {
SUBDIRS *= 3rdparty/opus-build
}
win32 {
equals(QMAKE_TARGET.arch, x86_64) {
SUBDIRS *= 3rdparty/minhook-build
}
}
SUBDIRS *= src/mumble
win32:CONFIG(static) {
SUBDIRS *= src/mumble_exe
}
!CONFIG(no-plugins) {
SUBDIRS *= plugins
}
win32 {
SUBDIRS *= 3rdparty/fx11-build
SUBDIRS *= overlay
SUBDIRS *= overlay/overlay_exe
!CONFIG(no-g15) {
SUBDIRS *= g15helper
}
}
unix:!macx:!CONFIG(no-overlay) {
SUBDIRS *= overlay_gl
}
macx {
MUMBLE_PREFIX = $$(MUMBLE_PREFIX)
isEmpty(MUMBLE_PREFIX) {
error("Missing $MUMBLE_PREFIX environment variable");
}
SUBDIRS *= macx
!exists($$(MUMBLE_PREFIX)/../LCDSDK) {
CONFIG *= no-g15
}
!CONFIG(no-g15) {
SUBDIRS *= g15helper
}
}
}
!CONFIG(no-server) {
SUBDIRS *= src/murmur
}
DIST=LICENSE INSTALL README README.Linux CHANGES
include(scripts/scripts.pro)