diff options
author | Mikkel Krautz <mikkel@krautz.dk> | 2015-01-15 18:48:27 +0300 |
---|---|---|
committer | Mikkel Krautz <mikkel@krautz.dk> | 2015-01-15 18:48:27 +0300 |
commit | 9f1e60507b06ab17e7dea22d4d5e83dc4bbc0e7b (patch) | |
tree | 48e81ac22af8b15a9d31b27d2215f8b5fc583708 /installer | |
parent | 3b507d57b795b822949562a0cca1172f7073f182 (diff) |
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.
Diffstat (limited to 'installer')
-rw-r--r-- | installer/Files.wxs | 3 | ||||
-rw-r--r-- | installer/Product.wxs | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/installer/Files.wxs b/installer/Files.wxs index 967a248b3..16901187b 100644 --- a/installer/Files.wxs +++ b/installer/Files.wxs @@ -35,6 +35,9 @@ <Component Id="mumble_ol.dll"> <File Source="$(var.SourceDir)\release\mumble_ol.dll" KeyPath="yes" /> </Component> + <Component Id="mumble_ol.exe"> + <File Source="$(var.SourceDir)\release\mumble_ol.exe" KeyPath="yes" /> + </Component> <Component Id="celt0.0.7.0.dll"> <File Source="$(var.SourceDir)\release\celt0.0.7.0.dll" KeyPath="yes" /> </Component> diff --git a/installer/Product.wxs b/installer/Product.wxs index 6828e7659..41516a6f8 100644 --- a/installer/Product.wxs +++ b/installer/Product.wxs @@ -172,6 +172,7 @@ <?endif ?> <ComponentRef Id="mumble.exe" /> <ComponentRef Id="mumble_ol.dll" /> + <ComponentRef Id="mumble_ol.exe" /> <?ifdef G15 ?> <ComponentRef Id="mumble_g15_helper.exe" /> <?endif ?> |