N64 D3D8 wrapper: handle wrapping/releasing textures better

This commit is contained in:
pjgat09 2014-07-20 03:18:31 +00:00
parent 042e72bfb6
commit 20fb404d2e
4 changed files with 4 additions and 22 deletions

View File

@ -4,6 +4,8 @@ extern "C"
{
namespace D3D8Wrapper
{
ThreadSafePointerSet D3D8Wrapper::IDirect3DResource8::m_List;
D3D8Wrapper::IDirect3DResource8::IDirect3DResource8(D3D8Base::IDirect3DResource8* pResource) : IDirect3DUnknown((IUnknown*) pResource)
{
LOG("IDirect3DResource8 from base " << pResource << " made " << this);

View File

@ -4,8 +4,6 @@ extern "C"
{
namespace D3D8Wrapper
{
ThreadSafePointerSet D3D8Wrapper::IDirect3DTexture8::m_List;
D3D8Wrapper::IDirect3DTexture8::IDirect3DTexture8(D3D8Base::IDirect3DTexture8* pTexture) : IDirect3DBaseTexture8((D3D8Base::IDirect3DBaseTexture8*) pTexture)
{
LOG("IDirect3DTexture8");
@ -14,12 +12,12 @@ extern "C"
D3D8Wrapper::IDirect3DTexture8* D3D8Wrapper::IDirect3DTexture8::GetTexture(D3D8Base::IDirect3DTexture8* pTexture)
{
D3D8Wrapper::IDirect3DTexture8* p = (D3D8Wrapper::IDirect3DTexture8*) m_List.GetDataPtr(pTexture);
D3D8Wrapper::IDirect3DTexture8* p = (D3D8Wrapper::IDirect3DTexture8*) D3D8Wrapper::IDirect3DResource8::m_List.GetDataPtr(pTexture);
if( p == NULL )
{
p = new D3D8Wrapper::IDirect3DTexture8(pTexture);
LOG("IDirect3DTexture8::GetTexture " << pTexture << " created new " << p)
m_List.AddMember(pTexture, p);
D3D8Wrapper::IDirect3DResource8::m_List.AddMember(pTexture, p);
return p;
}
@ -28,21 +26,6 @@ extern "C"
return p;
}
STDMETHODIMP_(ULONG) D3D8Wrapper::IDirect3DTexture8::Release(THIS)
{
LOG("IDirect3DTexture8::Release " << this);
m_pUnk->Release();
ULONG ulRef = --m_ulRef;
if(ulRef == 0)
{
m_List.DeleteMember(GetResource());
delete this;
return 0;
}
return ulRef;
}
/*STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3D8Base::D3DSURFACE_DESC *pDesc) PURE;*/
STDMETHODIMP D3D8Wrapper::IDirect3DTexture8::GetLevelDesc(UINT Level,D3D8Base::D3DSURFACE_DESC *pDesc)

View File

@ -5,7 +5,6 @@ D3D8Base::LPDIRECT3D8 g_D3D=NULL;
HMODULE hD3D;
ThreadSafePointerSet D3D8Wrapper::IDirect3DDevice8::m_List;
ThreadSafePointerSet D3D8Wrapper::IDirect3DResource8::m_List;
ThreadSafePointerSet D3D8Wrapper::IDirect3DBaseTexture8::m_List;
ThreadSafePointerSet D3D8Wrapper::IDirect3DVolumeTexture8::m_List;
ThreadSafePointerSet D3D8Wrapper::IDirect3DCubeTexture8::m_List;

View File

@ -312,8 +312,6 @@ extern "C"
static ThreadSafePointerSet m_List;
public:
STDMETHOD_(ULONG,Release)(THIS);
IDirect3DTexture8(D3D8Base::IDirect3DTexture8*);
static D3D8Wrapper::IDirect3DTexture8* GetTexture(D3D8Base::IDirect3DTexture8*);