diff --git a/OptiScaler/hooks/DxgiFactory_Hooks.cpp b/OptiScaler/hooks/DxgiFactory_Hooks.cpp index 38727bee..49b11032 100644 --- a/OptiScaler/hooks/DxgiFactory_Hooks.cpp +++ b/OptiScaler/hooks/DxgiFactory_Hooks.cpp @@ -38,6 +38,8 @@ void DxgiFactoryHooks::HookToFactory(IDXGIFactory* pFactory) if (pFactory == nullptr) return; + LOG_DEBUG(); + IDXGIFactory* real = nullptr; if (!Util::CheckForRealObject(__FUNCTION__, pFactory, (IUnknown**) &real)) real = pFactory; diff --git a/OptiScaler/hooks/Dxgi_Hooks.cpp b/OptiScaler/hooks/Dxgi_Hooks.cpp index 920a19ec..c7dfe6c7 100644 --- a/OptiScaler/hooks/Dxgi_Hooks.cpp +++ b/OptiScaler/hooks/Dxgi_Hooks.cpp @@ -13,18 +13,18 @@ static DxgiProxy::PFN_CreateDxgiFactory2 o_CreateDXGIFactory2 = nullptr; #pragma intrinsic(_ReturnAddress) -static HRESULT hkCreateDXGIFactory(REFIID riid, IDXGIFactory** ppFactory) +inline static HRESULT hkCreateDXGIFactory(REFIID riid, IDXGIFactory** ppFactory) { auto caller = Util::WhoIsTheCaller(_ReturnAddress()); LOG_DEBUG("Caller: {}", caller); - if (Config::Instance()->DxgiFactoryWrapping.value_for_config() && CheckDllName(&caller, &skipDxgiWrappingNames)) + if (Config::Instance()->DxgiFactoryWrapping.value_or_default() && CheckDllName(&caller, &skipDxgiWrappingNames)) { LOG_INFO("Skipping wrapping for: {}", caller); return o_CreateDXGIFactory(riid, ppFactory); } - if (Config::Instance()->DxgiFactoryWrapping.value_for_config() && + if (Config::Instance()->DxgiFactoryWrapping.value_or_default() && Util::GetCallerModule(_ReturnAddress()) == slInterposerModule) { LOG_DEBUG("Delaying 50ms"); @@ -48,7 +48,7 @@ static HRESULT hkCreateDXGIFactory(REFIID riid, IDXGIFactory** ppFactory) real = (IDXGIFactory*) (*ppFactory); - if (Config::Instance()->DxgiFactoryWrapping.value_for_config()) + if (Config::Instance()->DxgiFactoryWrapping.value_or_default()) *ppFactory = (IDXGIFactory*) (new WrappedIDXGIFactory7(real)); else DxgiFactoryHooks::HookToFactory(real); @@ -56,18 +56,18 @@ static HRESULT hkCreateDXGIFactory(REFIID riid, IDXGIFactory** ppFactory) return result; } -static HRESULT hkCreateDXGIFactory1(REFIID riid, IDXGIFactory1** ppFactory) +inline static HRESULT hkCreateDXGIFactory1(REFIID riid, IDXGIFactory1** ppFactory) { auto caller = Util::WhoIsTheCaller(_ReturnAddress()); LOG_DEBUG("Caller: {}", caller); - if (Config::Instance()->DxgiFactoryWrapping.value_for_config() && CheckDllName(&caller, &skipDxgiWrappingNames)) + if (Config::Instance()->DxgiFactoryWrapping.value_or_default() && CheckDllName(&caller, &skipDxgiWrappingNames)) { LOG_INFO("Skipping wrapping for: {}", caller); return o_CreateDXGIFactory1(riid, ppFactory); } - if (Config::Instance()->DxgiFactoryWrapping.value_for_config() && + if (Config::Instance()->DxgiFactoryWrapping.value_or_default() && Util::GetCallerModule(_ReturnAddress()) == slInterposerModule) { LOG_DEBUG("Delaying 50ms"); @@ -91,7 +91,7 @@ static HRESULT hkCreateDXGIFactory1(REFIID riid, IDXGIFactory1** ppFactory) real = (IDXGIFactory1*) (*ppFactory); - if (Config::Instance()->DxgiFactoryWrapping.value_for_config()) + if (Config::Instance()->DxgiFactoryWrapping.value_or_default()) *ppFactory = (IDXGIFactory1*) (new WrappedIDXGIFactory7(real)); else DxgiFactoryHooks::HookToFactory(real); @@ -99,12 +99,12 @@ static HRESULT hkCreateDXGIFactory1(REFIID riid, IDXGIFactory1** ppFactory) return result; } -static HRESULT hkCreateDXGIFactory2(UINT Flags, REFIID riid, IDXGIFactory2** ppFactory) +inline static HRESULT hkCreateDXGIFactory2(UINT Flags, REFIID riid, IDXGIFactory2** ppFactory) { auto caller = Util::WhoIsTheCaller(_ReturnAddress()); LOG_DEBUG("Caller: {}", caller); - if (Config::Instance()->DxgiFactoryWrapping.value_for_config() && CheckDllName(&caller, &skipDxgiWrappingNames)) + if (Config::Instance()->DxgiFactoryWrapping.value_or_default() && CheckDllName(&caller, &skipDxgiWrappingNames)) { LOG_INFO("Skipping wrapping for: {}", caller); return o_CreateDXGIFactory2(Flags, riid, ppFactory); @@ -112,7 +112,7 @@ static HRESULT hkCreateDXGIFactory2(UINT Flags, REFIID riid, IDXGIFactory2** ppF LOG_DEBUG("Caller: {}", Util::WhoIsTheCaller(_ReturnAddress())); - if (Config::Instance()->DxgiFactoryWrapping.value_for_config() && + if (Config::Instance()->DxgiFactoryWrapping.value_or_default() && Util::GetCallerModule(_ReturnAddress()) == slInterposerModule) { LOG_DEBUG("Delaying 50ms"); @@ -136,7 +136,7 @@ static HRESULT hkCreateDXGIFactory2(UINT Flags, REFIID riid, IDXGIFactory2** ppF real = (IDXGIFactory2*) (*ppFactory); - if (Config::Instance()->DxgiFactoryWrapping.value_for_config()) + if (Config::Instance()->DxgiFactoryWrapping.value_or_default()) *ppFactory = (IDXGIFactory2*) (new WrappedIDXGIFactory7(real)); else DxgiFactoryHooks::HookToFactory(real); diff --git a/OptiScaler/hooks/Ntdll_Hooks.h b/OptiScaler/hooks/Ntdll_Hooks.h index 672070dc..458b9034 100644 --- a/OptiScaler/hooks/Ntdll_Hooks.h +++ b/OptiScaler/hooks/Ntdll_Hooks.h @@ -411,7 +411,7 @@ class NtdllHooks if (module != nullptr) { - if (/*!_overlayMethodsCalled && */ DxgiProxy::Module() != nullptr) + if (!Config::Instance()->DxgiFactoryWrapping.value_or_default() && DxgiProxy::Module() != nullptr) { LOG_INFO("Calling CreateDxgiFactory methods for overlay!"); IDXGIFactory* factory = nullptr;