Age | Commit message (Collapse) | Author |
|
|
|
|
|
* Add Origin.exe and Razer Hydra system tray.
Both get injected, but do not display an overlay.
** As the Hydra system tray process will get injected even if not
displayed, could induce confusion with users not really aware of the
system tray process when updating Mumble (the need to close the
process).
|
|
* Introduce return code checking and logging on failure to D3D API calls.
This should make logging more elaborative and may point to issues when
debugging/looking for issues.
|
|
* Based on an initial patch by Benjamin Jemlich
* Effects11 code based on changes by nyet
|
|
* Fix log message text
* Format injection code logically, consistent to overlay injection code.
|
|
Function didn't handle errors at all and did only very limited logging.
This patch changes the function return type from void to bool and aborts
in case of failure. Also logging was added for all such failures. To handle
partially initialized object state the destructor was changed to NULL check
pointers before dereferencing them. If a failure occurs the state block
isn't used but destructed right away.
|
|
createSharedDataMap can fail to map the shared data used by other
functionality in the overlay dll. In this case pointers including
"sd" remain NULLd. With the recent overlay changes the modified
shared data structures changed, triggering this case when running
different versions. This crashed Mumble on startup due to an
unchecked dereference of the "sd" pointer.
Also when extracting createSharedDataMap during refactoring behavior
was changed. The overlay kept injecting itself even if the mapping
failed. This also addresses this by making createSharedDataMap return
a bool indicating success or failure.
|
|
Overlay: Rework Code.
|
|
* Introduce commented constatns for vtable offsets of create methods.
* Fix variable naming
* Resolve TODO in HookCreateEx:
HardHook checks if it was already set up (baseaddr != NULL), and if it was
it ignores further setup calls. Hence, we can safely do a best-effort of
hooking create9 again.
We currently expect the IDirect3D9 and IDirect3D9Ex objects to be the
same object instance.
** If we wanted to support separate objects we would query both for
IUnknown to compare addresses, and potentially create yet another hook to
myCreateDevice for the create9 on d3d9ex.
|
|
* Use ARRAY_NUM_ELEMENTS(array) instead of constant
|
|
* Use sizeof() rather then size constant where possible
|
|
* Make cpp-local functions static so they are local file/translation unit
scope.
* Remove unused variables uiAudioCount and bVideoHooked
* Comment extern declarations, where there definitions are located.
* Improve constant naming JUMPOP_OFFSET => JMP_OP_SIZE.
* Remove extern declaration from method definitions.
* Adjust type declaration formatting to typical formatting.
* Use voidFunc typedef to pass around function address pointers.
** C++-style casts instead of C-style raw casts.
* Other minor formatting (/whitespace) adjustments
* Fix log text.
* Improve log text.
* Consistent, improved varnaming in d3d9.cpp on address calculation;
naming fn and base.
|
|
* Separate DXGI logic from D3D10 into a separate file dxgi.cpp
* Structure code and logic, introduce additional functions
* Introduce constants
* Code commenting
* d3d9.cpp:
** Access devMap via std::find rather than operator[]
** Introduce class Stash to temporarily set variable value and revert on
destruction
** Move logic to function findOriginalDevice
** Use widestring for modulename (consistency)
** Implement Hook for Direct3DCreate9Ex
** Move function IsFnInModule to common lib.cpp/.h
* opengl.cpp:
** Add whitespace to format code
** Fix logging scope prefix
** Remove static global variable
|
|
|
|
|
|
in myCreateDevice(/Ex)
Incorrect checking for element existence in the std::map using the operator[]
caused interfaces to be added to the device map that weren't actually injected
to yet.
To minimize code impact before DX11 branch merge replace correct existence
checks triggering the bug with checks on whether there's a valid handle
(!= NULL) present for that device in the map. This way the default constructed
(and hence NULL) elements caused by the use of the operator[] are harmless.
For the future we'll have to decide whether we accept additional elements for
"simpler" coding or use the "logically cleaner" style of using find and
iterators.
|
|
* Present, AddRef and Release calls are not useful most of the time.
They were only logged in DEBUG builds, but as these methods are called very often heavily degrades performance.
Add define-guards so when one actually wants to debug and see them he can enable them.
Now, (normal) debug builds will not have the heavy performance loss any more.
|
|
|
|
|
|
|
|
|
|
|
|
* For D3D9Ex
** Hook PresentEx
** Hook ResetEx
|
|
- Move logic to new function IsFnInModule.
|
|
|
|
|
|
|
|
* commenting and adjusting debug output
* more descriptive varnaming
|
|
|
|
* fix typo
* debug text adjustments
|
|
Extend to handle library freeing.
Codeformatting and -cleanup, robustness, and make debugoutput more consistent.
* Indroduce hook for freeing loaded DLLs.
This separates logic between loading and freeing, leading to adjustments to
the recently introduced checks for freed DLLs.
* In HardHook::reset() do a clean and complete reset rather than minimal.
* Memvarinitialisation in HardHook
* Remove logically unused variable bPresenting in d3d9.cpp (always false)
* In d3d10.cpp prefix debugoutput with D3D10 consistently; no more DXGI
which is ambiguous with a d3d11 file that also uses DXGI.
* Consistently use ods instead of fods in the overlay files.
Not in HardHook yet, as that class is used in the Mumble client as well atm
* Fix forwarded return value types (LONG to ULONG)
* TODOs for hook-call-logic in multiple places
* Commenting, formatting and scope / order adjustments
* Introduce variables with constant values (replacing magic/undescriptive constants/numbers)
|
|
|
|
* Mark the childmethods overwriting the virtual Pipe methods as virtual explicitly
(effectively already were)
|
|
|
|
|
|
* Performance: Prefix increment in loops.
* Check VirtualAlloc return
* Check for successful memory allocation in cloneCode
* Swap assignment of pCode and uiCode
(if alloc were to fail and not assign, uiCode shouldn't be nulled either)
* declare statics before non-static members
* Introduce variables replacing magic constants
* Reduce varscopes
|
|
|
|
This is confirmed to fix the missing overlay in Guild Wars 2.
When D3D was used by a process thus loading the DLL, but then unloaded we did not inject on subsequent loading of the D3D DLL (in the same exe). Guild Wars 2 did un- and reload the DLL when switching from their launcher to the game.
This commit introduces HardHook::reset() and checks for inactive hardhooks for a newly loaded DLL.
The changes were submitted on sourceforge
https://sourceforge.net/p/mumble/bugs/909/#bf9e
|
|
* some few (4?) files actually already had it
|
|
* 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.
|
|
* as pointed out in issue #842
adjust names to match other header files
|
|
* Low impact fix for RC. Directly set VERSION in overlay.pro
* Currently the version is set multiple times
in different .pro/pri files. This should be refactored to come from
a single .pri file (similar to /macx/common.pri) used in all locations.
* Should probably use an RC file to be able to set more information
|
|
|
|
|
|
|
|
Otherwise, Steam as well as chrome (with flash?) get hooked. This will result
in the need to restart them on Mumble updating for example, which is
confusing to users because there is no visible overlay in those applications
anyway.
|
|
|
|
originals on Windows 8.
We were getting unbalanced AddRef/Releases on Direct3D9 apps running on Windows 8 that ran
fine on Windows 7. Windows 8 seems to be doing somthing funky with the internal ref count
of IDirect3DDevice9.
For now, piggyback on the orignal ref count methods to be able to determine when to release
ourselves. And cross our fingers that we won't be getting useless ref counts from some other
overlay.
This is a band-aid solution until we find something better.
|
|
|