From e51466efe1e0616195a39383f2777a368f60d248 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 1 May 2018 14:47:01 +0100 Subject: [PATCH] Ensure we AddRef when returning an existing ID3DDeviceContextState * Fixes a crash with Firefox and other D2D using applications. --- renderdoc/driver/d3d11/d3d11_context1_wrap.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/renderdoc/driver/d3d11/d3d11_context1_wrap.cpp b/renderdoc/driver/d3d11/d3d11_context1_wrap.cpp index 0e95fee3a..fb5fee52c 100644 --- a/renderdoc/driver/d3d11/d3d11_context1_wrap.cpp +++ b/renderdoc/driver/d3d11/d3d11_context1_wrap.cpp @@ -1994,9 +1994,15 @@ void WrappedID3D11DeviceContext::SwapDeviceContextState(ID3DDeviceContextState * WrappedID3DDeviceContextState *wrapped = NULL; if(m_pDevice->GetResourceManager()->HasWrapper(prev)) + { wrapped = (WrappedID3DDeviceContextState *)m_pDevice->GetResourceManager()->GetWrapper(prev); + + wrapped->AddRef(); + } else if(prev) + { wrapped = new WrappedID3DDeviceContextState(prev, m_pDevice); + } if(wrapped) wrapped->state->CopyState(*m_CurrentPipelineState);