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
|
namespace D3D8Wrapper
|
||||||
{
|
{
|
||||||
|
ThreadSafePointerSet D3D8Wrapper::IDirect3DResource8::m_List;
|
||||||
|
|
||||||
D3D8Wrapper::IDirect3DResource8::IDirect3DResource8(D3D8Base::IDirect3DResource8* pResource) : IDirect3DUnknown((IUnknown*) pResource)
|
D3D8Wrapper::IDirect3DResource8::IDirect3DResource8(D3D8Base::IDirect3DResource8* pResource) : IDirect3DUnknown((IUnknown*) pResource)
|
||||||
{
|
{
|
||||||
LOG("IDirect3DResource8 from base " << pResource << " made " << this);
|
LOG("IDirect3DResource8 from base " << pResource << " made " << this);
|
||||||
|
|
|
@ -4,8 +4,6 @@ extern "C"
|
||||||
{
|
{
|
||||||
namespace D3D8Wrapper
|
namespace D3D8Wrapper
|
||||||
{
|
{
|
||||||
ThreadSafePointerSet D3D8Wrapper::IDirect3DTexture8::m_List;
|
|
||||||
|
|
||||||
D3D8Wrapper::IDirect3DTexture8::IDirect3DTexture8(D3D8Base::IDirect3DTexture8* pTexture) : IDirect3DBaseTexture8((D3D8Base::IDirect3DBaseTexture8*) pTexture)
|
D3D8Wrapper::IDirect3DTexture8::IDirect3DTexture8(D3D8Base::IDirect3DTexture8* pTexture) : IDirect3DBaseTexture8((D3D8Base::IDirect3DBaseTexture8*) pTexture)
|
||||||
{
|
{
|
||||||
LOG("IDirect3DTexture8");
|
LOG("IDirect3DTexture8");
|
||||||
|
@ -14,12 +12,12 @@ extern "C"
|
||||||
|
|
||||||
D3D8Wrapper::IDirect3DTexture8* D3D8Wrapper::IDirect3DTexture8::GetTexture(D3D8Base::IDirect3DTexture8* pTexture)
|
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 )
|
if( p == NULL )
|
||||||
{
|
{
|
||||||
p = new D3D8Wrapper::IDirect3DTexture8(pTexture);
|
p = new D3D8Wrapper::IDirect3DTexture8(pTexture);
|
||||||
LOG("IDirect3DTexture8::GetTexture " << pTexture << " created new " << p)
|
LOG("IDirect3DTexture8::GetTexture " << pTexture << " created new " << p)
|
||||||
m_List.AddMember(pTexture, p);
|
D3D8Wrapper::IDirect3DResource8::m_List.AddMember(pTexture, p);
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,21 +26,6 @@ extern "C"
|
||||||
return p;
|
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;*/
|
/*STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3D8Base::D3DSURFACE_DESC *pDesc) PURE;*/
|
||||||
STDMETHODIMP D3D8Wrapper::IDirect3DTexture8::GetLevelDesc(UINT Level,D3D8Base::D3DSURFACE_DESC *pDesc)
|
STDMETHODIMP D3D8Wrapper::IDirect3DTexture8::GetLevelDesc(UINT Level,D3D8Base::D3DSURFACE_DESC *pDesc)
|
||||||
|
|
|
@ -5,7 +5,6 @@ D3D8Base::LPDIRECT3D8 g_D3D=NULL;
|
||||||
HMODULE hD3D;
|
HMODULE hD3D;
|
||||||
|
|
||||||
ThreadSafePointerSet D3D8Wrapper::IDirect3DDevice8::m_List;
|
ThreadSafePointerSet D3D8Wrapper::IDirect3DDevice8::m_List;
|
||||||
ThreadSafePointerSet D3D8Wrapper::IDirect3DResource8::m_List;
|
|
||||||
ThreadSafePointerSet D3D8Wrapper::IDirect3DBaseTexture8::m_List;
|
ThreadSafePointerSet D3D8Wrapper::IDirect3DBaseTexture8::m_List;
|
||||||
ThreadSafePointerSet D3D8Wrapper::IDirect3DVolumeTexture8::m_List;
|
ThreadSafePointerSet D3D8Wrapper::IDirect3DVolumeTexture8::m_List;
|
||||||
ThreadSafePointerSet D3D8Wrapper::IDirect3DCubeTexture8::m_List;
|
ThreadSafePointerSet D3D8Wrapper::IDirect3DCubeTexture8::m_List;
|
||||||
|
|
|
@ -312,8 +312,6 @@ extern "C"
|
||||||
static ThreadSafePointerSet m_List;
|
static ThreadSafePointerSet m_List;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
STDMETHOD_(ULONG,Release)(THIS);
|
|
||||||
|
|
||||||
IDirect3DTexture8(D3D8Base::IDirect3DTexture8*);
|
IDirect3DTexture8(D3D8Base::IDirect3DTexture8*);
|
||||||
|
|
||||||
static D3D8Wrapper::IDirect3DTexture8* GetTexture(D3D8Base::IDirect3DTexture8*);
|
static D3D8Wrapper::IDirect3DTexture8* GetTexture(D3D8Base::IDirect3DTexture8*);
|
||||||
|
|
Loading…
Reference in New Issue