N64 D3D8 wrapper: handle wrapping/releasing textures better
This commit is contained in:
parent
042e72bfb6
commit
20fb404d2e
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -312,8 +312,6 @@ extern "C"
|
|||
static ThreadSafePointerSet m_List;
|
||||
public:
|
||||
|
||||
STDMETHOD_(ULONG,Release)(THIS);
|
||||
|
||||
IDirect3DTexture8(D3D8Base::IDirect3DTexture8*);
|
||||
|
||||
static D3D8Wrapper::IDirect3DTexture8* GetTexture(D3D8Base::IDirect3DTexture8*);
|
||||
|
|
Loading…
Reference in New Issue