Path: blob/master/libmupen64plus/D3D8Interceptor/Direct3DSurface8Functions.cpp
2 views
#include "d3d8Wrapper.h"12extern "C"3{4namespace D3D8Wrapper5{6ThreadSafePointerSet IDirect3DSurface8::m_List;78D3D8Wrapper::IDirect3DSurface8::IDirect3DSurface8(D3D8Base::IDirect3DSurface8* realSurface) : IDirect3DUnknown((IUnknown*) realSurface)9{10LOG("IDirect3DSurface8::IDirect3DSurface8( " << realSurface << " )\n");11m_pD3D = realSurface;12}1314D3D8Wrapper::IDirect3DSurface8* D3D8Wrapper::IDirect3DSurface8::GetSurface(D3D8Base::IDirect3DSurface8* realSurface)15{16LOG("IDirect3DSurface8::GetSurface( " << realSurface << " )\n");17D3D8Wrapper::IDirect3DSurface8* wrappedSurface = (D3D8Wrapper::IDirect3DSurface8*) m_List.GetDataPtr(realSurface);18if(wrappedSurface == NULL)19{20wrappedSurface = new IDirect3DSurface8(realSurface);21m_List.AddMember(realSurface, wrappedSurface);22return wrappedSurface;23}2425wrappedSurface->m_ulRef++;26return wrappedSurface;27}2829STDMETHODIMP_(ULONG) D3D8Wrapper::IDirect3DSurface8::Release(THIS)30{31LOG("IDirect3DSurface8::Release() [ " << this << " ]\n");32m_pUnk->Release();3334ULONG ulRef = --m_ulRef;35if(ulRef == 0)36{37m_List.DeleteMember(GetSurface());38delete this;39return 0;40}41return ulRef;42}4344STDMETHODIMP D3D8Wrapper::IDirect3DSurface8::GetDevice(D3D8Wrapper::IDirect3DDevice8** ppDevice)45{46LOG("IDirect3DSurface8::GetDevice( " << ppDevice << " ) [ " << this << " ]\n");4748D3D8Base::IDirect3DDevice8* realD3D = NULL;4950HRESULT hr = m_pD3D->GetDevice(&realD3D);5152D3D8Wrapper::IDirect3DDevice8* wrappedD3D = new D3D8Wrapper::IDirect3DDevice8(realD3D);5354*ppDevice = wrappedD3D;5556return hr;57}5859STDMETHODIMP D3D8Wrapper::IDirect3DSurface8::SetPrivateData(REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags)60{61LOG("IDirect3DSurface8::SetPrivateData( " << &refguid << " , " << pData << " , " << SizeOfData << " , " << Flags << " ) [ " << this << " ]\n");62return m_pD3D->SetPrivateData(refguid,pData,SizeOfData,Flags);63}6465STDMETHODIMP D3D8Wrapper::IDirect3DSurface8::GetPrivateData(REFGUID refguid,void* pData,DWORD* pSizeOfData)66{67LOG("IDirect3DSurface8::GetPrivateData( " << &refguid << " , " << pData << " , " << pSizeOfData << " ) [ " << this << " ]\n");68return m_pD3D->GetPrivateData(refguid,pData,pSizeOfData);69}7071STDMETHODIMP D3D8Wrapper::IDirect3DSurface8::FreePrivateData(REFGUID refguid)72{73LOG("IDirect3DSurface8::FreePrivateData( " << &refguid << " ) [ " << this << " ]\n");74return m_pD3D->FreePrivateData(refguid);75}7677STDMETHODIMP D3D8Wrapper::IDirect3DSurface8::GetContainer(REFIID riid,void** ppContainer)78{79LOG("IDirect3DSurface8::GetContainer( " << &riid << " , " << ppContainer << " ) [ " << this << " ]\n");80return m_pD3D->GetContainer(riid,ppContainer);81}8283STDMETHODIMP D3D8Wrapper::IDirect3DSurface8::GetDesc(D3D8Base::D3DSURFACE_DESC *pDesc)84{85LOG("IDirect3DSurface8::GetDesc( " << pDesc << " ) [ " << this << " ]\n");86return m_pD3D->GetDesc(pDesc);87}8889STDMETHODIMP D3D8Wrapper::IDirect3DSurface8::LockRect(D3D8Base::D3DLOCKED_RECT* pLockedRect,CONST RECT* pRect,DWORD Flags)90{91#ifdef LOGGING92LOG("IDirect3DSurface8::LockRect( " << pLockedRect << " , " << pRect);93if (pRect != NULL)94{95LOG("{ " << pRect->left << " , " << pRect->top << " , " << pRect->right << " , " << pRect->bottom << " }");96}97LOG(" , " << Flags << " ) [ " << this << " ]\n");98#endif99return m_pD3D->LockRect(pLockedRect,pRect,Flags);100}101102STDMETHODIMP D3D8Wrapper::IDirect3DSurface8::UnlockRect()103{104LOG("IDirect3DSurface8::UnlockRect() [ " << this << " ]\n");105return m_pD3D->UnlockRect();106}107}108}109110