Mumble 1.3.0 on Windows will be built with MSVS 2013. That means
that old plugins will no longer load into it (Mumble will crash
if we try), because of C++ ABI differences between MSVS 2010
and MSVS 2013.
To combat this, we switch our plugin magics such that no ABI
mismatches can happen: Old clients will refuse to load new plugins,
and new clients will refuse to load old plugins.
We have a precedent for doing this. See dac82c99 (MSVS 2010 switch-over).
With this change, CONFIG(static) on Windows will cause the Mumble client's
application logic to be built into a .DLL called mumble_app.dll
(based on pcgod's previous DLL changeset).
Since src/mumble will now be built as a DLL, a wrapper executable is available
in src/mumble_exe. This wrapper is currently implemented such that it will
load mumble_app.dll from the directory that it resides in.
This means that when building statically, src/mumble and src/mumble_exe will
now give us the following products:
src/mumble: mumble_app.dll
src/mumble_exe: mumble.exe
Along with the two major points above, this change also adds a Python script
to the build, 'gen-mumble_app-qt-def.py', whose job is to construct a module
definition (.def) file for mumble_app.dll. The generated module definition
lists the Qt symbols that are needed for the manual positioning plugin to work.
If we need to expose more symbols in the future (say we want to implement
more plugin kinds than the current positional audio plugins), we now have
the infrastructure in place to do that.
Updated the L4D2 Offsets. Most of them were just small shifts in
memory.
The state offset no longer appears to work however so I simply
changed it so state is derived from the hostname (which is an empty
string in menus). This may lead to a brief period during loading where
the hostname is set but the positions aren't yet, but it should only be
momentary.
* Append underline to header guard defines to match the others (except ui_)
* Add guard to header files GlobalShortcut
* Adjust mklic.pl script to add guard to licenses.h,
and add updated licenses.h.
* NULL plugins have a shortname of L"Retracted" which excludes them
from being listed as a plugin in Mumble >= 1.2.4
* NULL plugins are valid plugins that always return false on trylock
so Mumble <= 1.2.3 gets behavior close to what recent Mumble has.
* NULL css, dods, tf2 and hl2dm plugins as they have been replaced by link support in the source engine.
* Fixed wrong context being reported (spamming murmur with wrong values)
when game version changes - now we rely on a pointer (confirmed to be
working)
* Restored a copyright line that I shouldn't have removed - sorry thorvald
:)
* Removed identity support since it's too much drama
* Added arrays of bytes to find when a new build of the game comes out
* Fixed plugin not unlinking in some cases
* Fixed plugin not linking in game menus
* Moved some static addresses outside functions for clarity Removed top vectors retrieval which can be problematic and aren't used at all in this game
* Fixed context support
- made the code simplier, less nested in fetch().
- strings are now ensured to be zero-terminated
- replaced calcout() call from trylock() with fetch call that can actually
fail.
- Disabled identity support since it still needs some work.
- Ensure zero termination of string from target process.
- Minimal style issues
- Re-added removed copyright line (IANAL but I don't think these are easily removed. Even with most of the source changed. So better be safe then sorry).
added avatar top vector support
added helpful arrays of bytes in case someone wants to update this plugin faster than me - if necessary, I can record a video-tutorial for this
changed the way trylock function is executed since we don't need all these checks (and important ones are checked in refreshPointers() function anyway)