2021-09-03 06:54:50 -04:00
|
|
|
#include <utility>
|
|
|
|
|
2018-11-29 20:13:36 +01:00
|
|
|
#include "d3d10_device.h"
|
|
|
|
|
|
|
|
namespace dxvk {
|
|
|
|
|
|
|
|
D3D10Multithread::D3D10Multithread(
|
|
|
|
IUnknown* pParent,
|
2022-08-24 12:27:02 +02:00
|
|
|
BOOL Protected,
|
|
|
|
BOOL Force)
|
2018-11-29 20:13:36 +01:00
|
|
|
: m_parent (pParent),
|
2022-08-24 12:27:02 +02:00
|
|
|
m_protected (Protected || Force),
|
|
|
|
m_enabled (Protected),
|
|
|
|
m_forced (Force) {
|
2018-11-29 20:13:36 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
D3D10Multithread::~D3D10Multithread() {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ULONG STDMETHODCALLTYPE D3D10Multithread::AddRef() {
|
|
|
|
return m_parent->AddRef();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ULONG STDMETHODCALLTYPE D3D10Multithread::Release() {
|
|
|
|
return m_parent->Release();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
HRESULT STDMETHODCALLTYPE D3D10Multithread::QueryInterface(
|
|
|
|
REFIID riid,
|
|
|
|
void** ppvObject) {
|
|
|
|
return m_parent->QueryInterface(riid, ppvObject);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void STDMETHODCALLTYPE D3D10Multithread::Enter() {
|
|
|
|
if (m_protected)
|
|
|
|
m_mutex.lock();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void STDMETHODCALLTYPE D3D10Multithread::Leave() {
|
|
|
|
if (m_protected)
|
|
|
|
m_mutex.unlock();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL STDMETHODCALLTYPE D3D10Multithread::SetMultithreadProtected(
|
|
|
|
BOOL bMTProtect) {
|
2022-08-24 12:27:02 +02:00
|
|
|
BOOL result = m_enabled;
|
|
|
|
m_enabled = bMTProtect;
|
|
|
|
|
|
|
|
if (!m_forced)
|
|
|
|
m_protected = m_enabled;
|
|
|
|
|
|
|
|
return result;
|
2018-11-29 20:13:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL STDMETHODCALLTYPE D3D10Multithread::GetMultithreadProtected() {
|
2022-08-24 12:27:02 +02:00
|
|
|
return m_enabled;
|
2018-11-29 20:13:36 +01:00
|
|
|
}
|
|
|
|
|
2021-09-03 06:54:50 -04:00
|
|
|
}
|