Path: blob/master/libmupen64plus/D3D8Interceptor/Direct3DResource8Functions.cpp
2 views
#include "d3d8Wrapper.h"12extern "C"3{4namespace D3D8Wrapper5{6ThreadSafePointerSet D3D8Wrapper::IDirect3DResource8::m_List;78D3D8Wrapper::IDirect3DResource8::IDirect3DResource8(D3D8Base::IDirect3DResource8* realResource) : IDirect3DUnknown((IUnknown*) realResource)9{10LOG("IDirect3DResource8::IDirect3DResource8( " << realResource << " )\n");11m_pD3D = realResource;12}1314D3D8Wrapper::IDirect3DResource8* D3D8Wrapper::IDirect3DResource8::GetResource(D3D8Base::IDirect3DResource8* realResource)15{16LOG("IDirect3DResource8::GetResource( " << realResource << " )\n");17D3D8Wrapper::IDirect3DResource8* wrappedResource = (D3D8Wrapper::IDirect3DResource8*) m_List.GetDataPtr(realResource);18if( wrappedResource == NULL )19{20wrappedResource = new D3D8Wrapper::IDirect3DResource8(realResource);21m_List.AddMember(realResource, wrappedResource);22return wrappedResource;23}2425wrappedResource->m_ulRef++;26return wrappedResource;27}2829STDMETHODIMP_(ULONG) D3D8Wrapper::IDirect3DResource8::Release(THIS)30{31LOG("IDirect3DResource8::Release() [ " << this << " ]\n");32m_pUnk->Release();3334ULONG ulRef = --m_ulRef;35if(ulRef == 0)36{37m_List.DeleteMember(GetResource());38delete this;39return 0;40}41return ulRef;42}4344STDMETHODIMP D3D8Wrapper::IDirect3DResource8::GetDevice(D3D8Wrapper::IDirect3DDevice8** ppDevice)45{46LOG("IDirect3DResource8::GetDevice( " << ppDevice << " ) [ " << this << " ]\n");47D3D8Base::IDirect3DDevice8* realD3D = NULL;4849HRESULT hr = m_pD3D->GetDevice(&realD3D);5051D3D8Wrapper::IDirect3DDevice8* wrappedD3D = new D3D8Wrapper::IDirect3DDevice8(realD3D);5253*ppDevice = wrappedD3D;5455return hr;56}5758STDMETHODIMP D3D8Wrapper::IDirect3DResource8::SetPrivateData(REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags)59{60LOG("IDirect3DResource8::SetPrivateData( " << &refguid << " , " << pData << " , " << SizeOfData << " , " << Flags << " ) [ " << this << " ]\n");61return m_pD3D->SetPrivateData(refguid,pData,SizeOfData,Flags);62}6364STDMETHODIMP D3D8Wrapper::IDirect3DResource8::GetPrivateData(REFGUID refguid,void* pData,DWORD* pSizeOfData)65{66LOG("IDirect3DResource8::GetPrivateData( " << &refguid << " , " << pData << " , " << pSizeOfData << " ) [ " << this << " ]\n");67return m_pD3D->GetPrivateData(refguid,pData,pSizeOfData);68}6970STDMETHODIMP D3D8Wrapper::IDirect3DResource8::FreePrivateData(REFGUID refguid)71{72LOG("IDirect3DResource8::FreePrivateData( " << &refguid << " ) [ " << this << " ]\n");73return m_pD3D->FreePrivateData(refguid);74}7576STDMETHODIMP_(DWORD) D3D8Wrapper::IDirect3DResource8::SetPriority(DWORD PriorityNew)77{78LOG("IDirect3DResource8::SetPriority( " << PriorityNew << " ) [ " << this << " ]\n");79return m_pD3D->SetPriority(PriorityNew);80}8182STDMETHODIMP_(DWORD) D3D8Wrapper::IDirect3DResource8::GetPriority()83{84LOG("IDirect3DResource8::GetPriority() [ " << this << " ]\n");85return m_pD3D->GetPriority();86}8788STDMETHODIMP_(void) D3D8Wrapper::IDirect3DResource8::PreLoad()89{90LOG("IDirect3DResource8::PreLoad() [ " << this << " ]\n");91return m_pD3D->PreLoad();92}9394STDMETHODIMP_(D3D8Base::D3DRESOURCETYPE) D3D8Wrapper::IDirect3DResource8::GetType()95{96LOG("IDirect3DResource8::GetType() [ " << this << " ]\n");97return m_pD3D->GetType();98}99}100}101102