Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libmupen64plus/D3D8Interceptor/Direct3DResource8Functions.cpp
2 views
1
#include "d3d8Wrapper.h"
2
3
extern "C"
4
{
5
namespace D3D8Wrapper
6
{
7
ThreadSafePointerSet D3D8Wrapper::IDirect3DResource8::m_List;
8
9
D3D8Wrapper::IDirect3DResource8::IDirect3DResource8(D3D8Base::IDirect3DResource8* realResource) : IDirect3DUnknown((IUnknown*) realResource)
10
{
11
LOG("IDirect3DResource8::IDirect3DResource8( " << realResource << " )\n");
12
m_pD3D = realResource;
13
}
14
15
D3D8Wrapper::IDirect3DResource8* D3D8Wrapper::IDirect3DResource8::GetResource(D3D8Base::IDirect3DResource8* realResource)
16
{
17
LOG("IDirect3DResource8::GetResource( " << realResource << " )\n");
18
D3D8Wrapper::IDirect3DResource8* wrappedResource = (D3D8Wrapper::IDirect3DResource8*) m_List.GetDataPtr(realResource);
19
if( wrappedResource == NULL )
20
{
21
wrappedResource = new D3D8Wrapper::IDirect3DResource8(realResource);
22
m_List.AddMember(realResource, wrappedResource);
23
return wrappedResource;
24
}
25
26
wrappedResource->m_ulRef++;
27
return wrappedResource;
28
}
29
30
STDMETHODIMP_(ULONG) D3D8Wrapper::IDirect3DResource8::Release(THIS)
31
{
32
LOG("IDirect3DResource8::Release() [ " << this << " ]\n");
33
m_pUnk->Release();
34
35
ULONG ulRef = --m_ulRef;
36
if(ulRef == 0)
37
{
38
m_List.DeleteMember(GetResource());
39
delete this;
40
return 0;
41
}
42
return ulRef;
43
}
44
45
STDMETHODIMP D3D8Wrapper::IDirect3DResource8::GetDevice(D3D8Wrapper::IDirect3DDevice8** ppDevice)
46
{
47
LOG("IDirect3DResource8::GetDevice( " << ppDevice << " ) [ " << this << " ]\n");
48
D3D8Base::IDirect3DDevice8* realD3D = NULL;
49
50
HRESULT hr = m_pD3D->GetDevice(&realD3D);
51
52
D3D8Wrapper::IDirect3DDevice8* wrappedD3D = new D3D8Wrapper::IDirect3DDevice8(realD3D);
53
54
*ppDevice = wrappedD3D;
55
56
return hr;
57
}
58
59
STDMETHODIMP D3D8Wrapper::IDirect3DResource8::SetPrivateData(REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags)
60
{
61
LOG("IDirect3DResource8::SetPrivateData( " << &refguid << " , " << pData << " , " << SizeOfData << " , " << Flags << " ) [ " << this << " ]\n");
62
return m_pD3D->SetPrivateData(refguid,pData,SizeOfData,Flags);
63
}
64
65
STDMETHODIMP D3D8Wrapper::IDirect3DResource8::GetPrivateData(REFGUID refguid,void* pData,DWORD* pSizeOfData)
66
{
67
LOG("IDirect3DResource8::GetPrivateData( " << &refguid << " , " << pData << " , " << pSizeOfData << " ) [ " << this << " ]\n");
68
return m_pD3D->GetPrivateData(refguid,pData,pSizeOfData);
69
}
70
71
STDMETHODIMP D3D8Wrapper::IDirect3DResource8::FreePrivateData(REFGUID refguid)
72
{
73
LOG("IDirect3DResource8::FreePrivateData( " << &refguid << " ) [ " << this << " ]\n");
74
return m_pD3D->FreePrivateData(refguid);
75
}
76
77
STDMETHODIMP_(DWORD) D3D8Wrapper::IDirect3DResource8::SetPriority(DWORD PriorityNew)
78
{
79
LOG("IDirect3DResource8::SetPriority( " << PriorityNew << " ) [ " << this << " ]\n");
80
return m_pD3D->SetPriority(PriorityNew);
81
}
82
83
STDMETHODIMP_(DWORD) D3D8Wrapper::IDirect3DResource8::GetPriority()
84
{
85
LOG("IDirect3DResource8::GetPriority() [ " << this << " ]\n");
86
return m_pD3D->GetPriority();
87
}
88
89
STDMETHODIMP_(void) D3D8Wrapper::IDirect3DResource8::PreLoad()
90
{
91
LOG("IDirect3DResource8::PreLoad() [ " << this << " ]\n");
92
return m_pD3D->PreLoad();
93
}
94
95
STDMETHODIMP_(D3D8Base::D3DRESOURCETYPE) D3D8Wrapper::IDirect3DResource8::GetType()
96
{
97
LOG("IDirect3DResource8::GetType() [ " << this << " ]\n");
98
return m_pD3D->GetType();
99
}
100
}
101
}
102