mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2024-11-23 19:25:35 +08:00
Call the true function before initializing hook.
This commit is contained in:
parent
3c265596a9
commit
4f7e42a905
@ -7,17 +7,11 @@
|
|||||||
|
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class Hook_Manager
|
class Hook_Manager
|
||||||
{
|
{
|
||||||
friend class Base_Hook;
|
friend class Base_Hook;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// TODO: If needed, create a second vector with only the renderers hook
|
|
||||||
// Cause actually, a call to FoundRenderer will unhook everything registered except the renderer hook
|
|
||||||
// If you do that, you should consider moving the renderer hooks to its own class and keep this one generic ?
|
|
||||||
std::set<Base_Hook*> _hooks;
|
std::set<Base_Hook*> _hooks;
|
||||||
|
|
||||||
Hook_Manager();
|
Hook_Manager();
|
||||||
|
@ -120,33 +120,36 @@ HRESULT STDMETHODCALLTYPE Renderer_Detector::MyPresent(IDirect3DDevice9* _this,
|
|||||||
{
|
{
|
||||||
Renderer_Detector& inst = Renderer_Detector::Inst();
|
Renderer_Detector& inst = Renderer_Detector::Inst();
|
||||||
Hook_Manager& hm = Hook_Manager::Inst();
|
Hook_Manager& hm = Hook_Manager::Inst();
|
||||||
|
auto res = (_this->*_IDirect3DDevice9_Present)(pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
|
||||||
if (!inst.stop_retry())
|
if (!inst.stop_retry())
|
||||||
{
|
{
|
||||||
DX9_Hook::Inst()->start_hook();
|
DX9_Hook::Inst()->start_hook();
|
||||||
}
|
}
|
||||||
return (_this->*_IDirect3DDevice9_Present)(pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE Renderer_Detector::MyPresentEx(IDirect3DDevice9Ex* _this, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion, DWORD dwFlags)
|
HRESULT STDMETHODCALLTYPE Renderer_Detector::MyPresentEx(IDirect3DDevice9Ex* _this, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
Renderer_Detector& inst = Renderer_Detector::Inst();
|
Renderer_Detector& inst = Renderer_Detector::Inst();
|
||||||
Hook_Manager& hm = Hook_Manager::Inst();
|
Hook_Manager& hm = Hook_Manager::Inst();
|
||||||
|
auto res = (_this->*_IDirect3DDevice9Ex_PresentEx)(pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, dwFlags);
|
||||||
if (!inst.stop_retry())
|
if (!inst.stop_retry())
|
||||||
{
|
{
|
||||||
DX9_Hook::Inst()->start_hook();
|
DX9_Hook::Inst()->start_hook();
|
||||||
}
|
}
|
||||||
return (_this->*_IDirect3DDevice9Ex_PresentEx)(pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, dwFlags);
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL WINAPI Renderer_Detector::MywglMakeCurrent(HDC hDC, HGLRC hGLRC)
|
BOOL WINAPI Renderer_Detector::MywglMakeCurrent(HDC hDC, HGLRC hGLRC)
|
||||||
{
|
{
|
||||||
Renderer_Detector& inst = Renderer_Detector::Inst();
|
Renderer_Detector& inst = Renderer_Detector::Inst();
|
||||||
Hook_Manager& hm = Hook_Manager::Inst();
|
Hook_Manager& hm = Hook_Manager::Inst();
|
||||||
|
auto res = _wglMakeCurrent(hDC, hGLRC);
|
||||||
if (!inst.stop_retry())
|
if (!inst.stop_retry())
|
||||||
{
|
{
|
||||||
OpenGL_Hook::Inst()->start_hook();
|
OpenGL_Hook::Inst()->start_hook();
|
||||||
}
|
}
|
||||||
return _wglMakeCurrent(hDC, hGLRC);
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer_Detector::HookDXGIPresent(IDXGISwapChain* pSwapChain)
|
void Renderer_Detector::HookDXGIPresent(IDXGISwapChain* pSwapChain)
|
||||||
|
Loading…
Reference in New Issue
Block a user