1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-19 05:52:11 +01:00

[d3d11] Fix ref counting for D3D11CommandList

This commit is contained in:
Philip Rebohle 2019-10-25 21:37:18 +02:00
parent 41f04ffb61
commit 55bae45915
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
2 changed files with 23 additions and 1 deletions

View File

@ -15,6 +15,22 @@ namespace dxvk {
}
ULONG STDMETHODCALLTYPE D3D11CommandList::AddRef() {
ULONG refCount = m_refCount++;
if (!refCount)
m_device->AddRef();
return refCount + 1;
}
ULONG STDMETHODCALLTYPE D3D11CommandList::Release() {
ULONG refCount = --m_refCount;
if (!refCount)
m_device->Release();
return refCount;
}
HRESULT STDMETHODCALLTYPE D3D11CommandList::QueryInterface(REFIID riid, void** ppvObject) {
if (ppvObject == nullptr)
return E_POINTER;

View File

@ -4,7 +4,7 @@
namespace dxvk {
class D3D11CommandList : public D3D11DeviceChild<ID3D11CommandList> {
class D3D11CommandList : public D3D11DeviceChild<ID3D11CommandList, NoWrapper> {
public:
@ -14,6 +14,10 @@ namespace dxvk {
~D3D11CommandList();
ULONG STDMETHODCALLTYPE AddRef();
ULONG STDMETHODCALLTYPE Release();
HRESULT STDMETHODCALLTYPE QueryInterface(
REFIID riid,
void** ppvObject) final;
@ -42,6 +46,8 @@ namespace dxvk {
std::atomic<bool> m_submitted = { false };
std::atomic<bool> m_warned = { false };
std::atomic<uint32_t> m_refCount = { 0u };
void MarkSubmitted();
};