mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-01-18 20:52:10 +01:00
[d3d11] Fix ref counting for D3D11CommandList
This commit is contained in:
parent
41f04ffb61
commit
55bae45915
@ -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;
|
||||
|
@ -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();
|
||||
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user