diff --git a/src/mods/vr/RenderTargetPoolHook.cpp b/src/mods/vr/RenderTargetPoolHook.cpp index 26abb394..88220199 100644 --- a/src/mods/vr/RenderTargetPoolHook.cpp +++ b/src/mods/vr/RenderTargetPoolHook.cpp @@ -79,13 +79,18 @@ bool RenderTargetPoolHook::find_free_element_hook( if (name != nullptr) { //SPDLOG_INFO("FRenderTargetPool::FindFreeElement called with name {}", utility::narrow(name)); + std::scoped_lock _{g_hook->m_mutex}; + if (out != nullptr) { - std::scoped_lock _{g_hook->m_mutex}; + g_hook->m_render_targets[name] = out->reference; + } else { + g_hook->m_render_targets.erase(name); + } - if (!g_hook->m_seen_names.contains(name)) { - g_hook->m_seen_names.insert(name); - SPDLOG_INFO("FRenderTargetPool::FindFreeElement called with name {}", utility::narrow(name)); - } + if (!g_hook->m_seen_names.contains(name)) { + g_hook->m_seen_names.insert(name); + SPDLOG_INFO("FRenderTargetPool::FindFreeElement called with name {}", utility::narrow(name)); + } g_hook->m_render_targets[name] = out->reference; }