From 9c6bb76bf70e32f2c79c1b0687337fe1cbdab1dd Mon Sep 17 00:00:00 2001 From: cdozdil Date: Fri, 27 Mar 2026 15:59:59 +0300 Subject: [PATCH] More small fixes --- OptiScaler/hooks/Crypt32_Hooks.h | 6 ++-- OptiScaler/hooks/Gdi32_Hooks.h | 2 +- OptiScaler/hooks/Reflex_Hooks.cpp | 7 +++-- OptiScaler/hooks/Streamline_Hooks.cpp | 41 ++++++++++++++++----------- OptiScaler/hooks/Xell_Hooks.h | 1 + 5 files changed, 35 insertions(+), 22 deletions(-) diff --git a/OptiScaler/hooks/Crypt32_Hooks.h b/OptiScaler/hooks/Crypt32_Hooks.h index 42924b79..9a9d5955 100644 --- a/OptiScaler/hooks/Crypt32_Hooks.h +++ b/OptiScaler/hooks/Crypt32_Hooks.h @@ -9,7 +9,7 @@ typedef decltype(&CryptQueryObject) PFN_CryptQueryObject; -static PFN_CryptQueryObject o_CryptQueryObject = nullptr; +inline static PFN_CryptQueryObject o_CryptQueryObject = nullptr; VALIDATE_HOOK(hkCryptQueryObject, PFN_CryptQueryObject) static BOOL hkCryptQueryObject(DWORD dwObjectType, const void* pvObject, DWORD dwExpectedContentTypeFlags, @@ -24,8 +24,8 @@ static BOOL hkCryptQueryObject(DWORD dwObjectType, const void* pvObject, DWORD d to_lower_in_place(pathString); // It's applied even if ffx is already signed, could be improved - if (pathString.contains("amd_fidelityfx_dx12.dll") || - pathString.contains("amd_fidelityfx_vk.dll") && GetFSR4Module()) + if ((pathString.contains("amd_fidelityfx_dx12.dll") || pathString.contains("amd_fidelityfx_vk.dll")) && + GetFSR4Module()) { LOG_DEBUG("Replacing FFX with a signed dll"); WCHAR signedDll[256] {}; diff --git a/OptiScaler/hooks/Gdi32_Hooks.h b/OptiScaler/hooks/Gdi32_Hooks.h index 65a84366..16c94f2e 100644 --- a/OptiScaler/hooks/Gdi32_Hooks.h +++ b/OptiScaler/hooks/Gdi32_Hooks.h @@ -9,7 +9,7 @@ typedef decltype(&D3DKMTQueryAdapterInfo) PFN_D3DKMTQueryAdapterInfo; typedef decltype(&D3DKMTEnumAdapters2) PFN_D3DKMTEnumAdapters2; -static PFN_D3DKMTQueryAdapterInfo o_D3DKMTQueryAdapterInfo = nullptr; +inline static PFN_D3DKMTQueryAdapterInfo o_D3DKMTQueryAdapterInfo = nullptr; VALIDATE_HOOK(hkD3DKMTQueryAdapterInfo, PFN_D3DKMTQueryAdapterInfo) static NTSTATUS hkD3DKMTQueryAdapterInfo(const D3DKMT_QUERYADAPTERINFO* data) diff --git a/OptiScaler/hooks/Reflex_Hooks.cpp b/OptiScaler/hooks/Reflex_Hooks.cpp index 814e1077..96cea9b3 100644 --- a/OptiScaler/hooks/Reflex_Hooks.cpp +++ b/OptiScaler/hooks/Reflex_Hooks.cpp @@ -325,6 +325,7 @@ NvAPI_Status ReflexHooks::hkNvAPI_D3D12_SetAsyncFrameMarker(ID3D12CommandQueue* current_run = 1; } } + max_run_length = std::max(max_run_length, current_run); int detected_mode = 0; @@ -349,7 +350,9 @@ NvAPI_Status ReflexHooks::hkNvAPI_D3D12_SetAsyncFrameMarker(ID3D12CommandQueue* candidate_mode = detected_mode; candidate_count = 1; } - max_run_length = std::max(max_run_length, current_run); + + // Redundant + // max_run_length = std::max(max_run_length, current_run); // Only commit after stable detection if (candidate_count >= stability_threshold) @@ -625,7 +628,7 @@ void ReflexHooks::update(bool fgActive, bool isVulkan) return; float currentFps = Config::Instance()->FramerateLimit.value_or_default(); - static uint8_t lastFgNumFramesToGenerate = false; + static uint8_t lastFgNumFramesToGenerate = 0; if (lastFgNumFramesToGenerate != _FgNumFramesToGenerate) { diff --git a/OptiScaler/hooks/Streamline_Hooks.cpp b/OptiScaler/hooks/Streamline_Hooks.cpp index 4f8d009d..a2f7787d 100644 --- a/OptiScaler/hooks/Streamline_Hooks.cpp +++ b/OptiScaler/hooks/Streamline_Hooks.cpp @@ -68,7 +68,8 @@ StreamlineHooks::PFN_setVoid StreamlineHooks::o_setVoid = nullptr; char* StreamlineHooks::trimStreamlineLog(const char* msg) { - int bracket_count = 0; + // Unused + // int bracket_count = 0; char* result = (char*) malloc(strlen(msg) + 1); if (!result) @@ -327,23 +328,26 @@ void StreamlineHooks::streamlineLogCallback_sl1(sl1::LogType type, const char* m char* trimmed_msg = trimStreamlineLog(msg); - switch (type) + if (trimmed_msg != nullptr) { - case sl1::LogType::eLogTypeWarn: - LOG_WARN("{}", trimmed_msg); - break; - case sl1::LogType::eLogTypeInfo: - LOG_INFO("{}", trimmed_msg); - break; - case sl1::LogType::eLogTypeError: - LOG_ERROR("{}", trimmed_msg); - break; - case sl1::LogType::eLogTypeCount: - LOG_ERROR("{}", trimmed_msg); - break; - } + switch (type) + { + case sl1::LogType::eLogTypeWarn: + LOG_WARN("{}", trimmed_msg); + break; + case sl1::LogType::eLogTypeInfo: + LOG_INFO("{}", trimmed_msg); + break; + case sl1::LogType::eLogTypeError: + LOG_ERROR("{}", trimmed_msg); + break; + case sl1::LogType::eLogTypeCount: + LOG_ERROR("{}", trimmed_msg); + break; + } - free(trimmed_msg); + free(trimmed_msg); + } if (o_logCallback_sl1) o_logCallback_sl1(type, msg); @@ -1110,6 +1114,11 @@ void StreamlineHooks::updateForceReflex() options.mode = reflexGamesLastMode; auto result = o_slReflexSetOptions(options); + if (result != sl::Result::eOk) + { + LOG_WARN("Failed to update Reflex mode with error code: {} ({:X})", magic_enum::enum_name(result), + (UINT) result); + } } } diff --git a/OptiScaler/hooks/Xell_Hooks.h b/OptiScaler/hooks/Xell_Hooks.h index 166832bc..43003841 100644 --- a/OptiScaler/hooks/Xell_Hooks.h +++ b/OptiScaler/hooks/Xell_Hooks.h @@ -57,4 +57,5 @@ class XellHooks VALIDATE_MEMBER_HOOK(hkxellGetVersion, PFN_xellGetVersion) VALIDATE_MEMBER_HOOK(hkxellSetLoggingCallback, PFN_xellSetLoggingCallback) VALIDATE_MEMBER_HOOK(hkxellD3D12CreateContext, PFN_xellD3D12CreateContext) + VALIDATE_MEMBER_HOOK(hkxellGetSleepMode, PFN_xellGetSleepMode) };