From af29b8d9d93972da2f1edc36fe1dc8369bd87a86 Mon Sep 17 00:00:00 2001 From: praydog Date: Fri, 7 Feb 2025 01:49:50 -0800 Subject: [PATCH] FFakeStereorenderingHook: Fix crash seen in 11548cfa10b610cd1a8a70a1423e95561280da42 --- src/mods/vr/FFakeStereoRenderingHook.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/mods/vr/FFakeStereoRenderingHook.cpp b/src/mods/vr/FFakeStereoRenderingHook.cpp index 5e5be842..af41919a 100644 --- a/src/mods/vr/FFakeStereoRenderingHook.cpp +++ b/src/mods/vr/FFakeStereoRenderingHook.cpp @@ -3035,20 +3035,23 @@ void FFakeStereoRenderingHook::pre_render_viewfamily_renderthread(ISceneViewExte return; } + auto& vr = VR::get(); + + if (!vr->is_hmd_active()) { + return; + } + static size_t execution_count{0}; + // This should 100% only get executed if the headset is on, because + // FFakeStereoRenderingHook::render_texture_render_thread is the first fallback for hooking + // And we don't want to miss that unintentionally if (g_hook->m_attempted_hook_slate_thread && !g_hook->m_slate_thread_hook && !g_hook->m_attempted_hook_slate_thread_alternate && execution_count++ >= 50) { SPDLOG_INFO("DrawWindow_RenderThread was not hooked after {} render calls, trying alternative hook", execution_count); g_hook->attempt_hook_slate_thread(0, true); } - auto& vr = VR::get(); - - if (!vr->is_hmd_active()) { - return; - } - if (vr->is_stereo_emulation_enabled()) { return; }