From 17320776f0d1cb642fdf35b592bfe7309cb0fa74 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 1 Sep 2022 16:36:47 +0200 Subject: [PATCH] [dxgi] Duplicate frame latency handle Apps can call CloseHandle on this. --- src/d3d11/d3d11_swapchain.cpp | 13 ++++++++++++- src/d3d11/d3d11_swapchain.h | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/d3d11/d3d11_swapchain.cpp b/src/d3d11/d3d11_swapchain.cpp index 8e007e7d5..21772d539 100644 --- a/src/d3d11/d3d11_swapchain.cpp +++ b/src/d3d11/d3d11_swapchain.cpp @@ -115,7 +115,18 @@ namespace dxvk { HANDLE STDMETHODCALLTYPE D3D11SwapChain::GetFrameLatencyEvent() { - return m_frameLatencyEvent; + HANDLE result = nullptr; + + if (!m_processHandle) + m_processHandle = GetCurrentProcess(); + + if (!DuplicateHandle(m_processHandle, m_frameLatencyEvent, + m_processHandle, &result, 0, FALSE, DUPLICATE_SAME_ACCESS)) { + Logger::err("DxgiSwapChain::GetFrameLatencyWaitableObject: DuplicateHandle failed"); + return nullptr; + } + + return result; } diff --git a/src/d3d11/d3d11_swapchain.h b/src/d3d11/d3d11_swapchain.h index f4debea14..8a006a153 100644 --- a/src/d3d11/d3d11_swapchain.h +++ b/src/d3d11/d3d11_swapchain.h @@ -109,6 +109,8 @@ namespace dxvk { HANDLE m_frameLatencyEvent = nullptr; Rc m_frameLatencySignal; + HANDLE m_processHandle = nullptr; + bool m_dirty = true; bool m_vsync = true;