Check all inline destructors

This commit is contained in:
Mark Langen 2023-11-30 23:35:27 -08:00
parent 495070a2f4
commit fef91382e6
9 changed files with 75 additions and 65 deletions

View File

@ -5,14 +5,8 @@ using namespace TglImpl;
DECOMP_SIZE_ASSERT(Camera, 0x4); DECOMP_SIZE_ASSERT(Camera, 0x4);
DECOMP_SIZE_ASSERT(CameraImpl, 0x8); DECOMP_SIZE_ASSERT(CameraImpl, 0x8);
// Inlined only // OFFSET: LEGO1 0x100a2560 TEMPLATE
CameraImpl::~CameraImpl() // TglImpl::LightImpl::`scalar deleting destructor'
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
// OFFSET: LEGO1 0x100a36f0 // OFFSET: LEGO1 0x100a36f0
void* CameraImpl::ImplementationDataPtr() void* CameraImpl::ImplementationDataPtr()

View File

@ -4,14 +4,8 @@
using namespace TglImpl; using namespace TglImpl;
// Inlined only // OFFSET: LEGO1 0x100a22c0 TEMPLATE
DeviceImpl::~DeviceImpl() // TglImpl::LightImpl::`scalar deleting destructor'
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
// OFFSET: LEGO1 0x100a2bf0 // OFFSET: LEGO1 0x100a2bf0
void* DeviceImpl::ImplementationDataPtr() void* DeviceImpl::ImplementationDataPtr()

View File

@ -2,14 +2,8 @@
using namespace TglImpl; using namespace TglImpl;
// Inlined only // OFFSET: LEGO1 0x100a2480 TEMPLATE
GroupImpl::~GroupImpl() // TglImpl::GroupImpl::`scalar deleting destructor'
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
// OFFSET: LEGO1 0x100a31d0 // OFFSET: LEGO1 0x100a31d0
void* GroupImpl::ImplementationDataPtr() void* GroupImpl::ImplementationDataPtr()

View File

@ -89,7 +89,13 @@ class RendererImpl : public Renderer {
class DeviceImpl : public Device { class DeviceImpl : public Device {
public: public:
DeviceImpl() : m_data(0) {} DeviceImpl() : m_data(0) {}
~DeviceImpl(); ~DeviceImpl()
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
virtual void* ImplementationDataPtr(); virtual void* ImplementationDataPtr();
@ -120,7 +126,13 @@ class DeviceImpl : public Device {
class ViewImpl : public View { class ViewImpl : public View {
public: public:
ViewImpl() : m_data(0) {} ViewImpl() : m_data(0) {}
~ViewImpl(); ~ViewImpl()
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
virtual void* ImplementationDataPtr(); virtual void* ImplementationDataPtr();
@ -166,7 +178,13 @@ class ViewImpl : public View {
class CameraImpl : public Camera { class CameraImpl : public Camera {
public: public:
CameraImpl() : m_data(0) {} CameraImpl() : m_data(0) {}
~CameraImpl(); ~CameraImpl()
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
virtual void* ImplementationDataPtr(); virtual void* ImplementationDataPtr();
@ -185,7 +203,13 @@ class CameraImpl : public Camera {
class LightImpl : public Light { class LightImpl : public Light {
public: public:
LightImpl() : m_data(0) {} LightImpl() : m_data(0) {}
~LightImpl(); ~LightImpl()
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
virtual void* ImplementationDataPtr(); virtual void* ImplementationDataPtr();
@ -245,7 +269,13 @@ class MeshImpl : public Mesh {
class GroupImpl : public Group { class GroupImpl : public Group {
public: public:
GroupImpl() : m_data(0) {} GroupImpl() : m_data(0) {}
~GroupImpl(); ~GroupImpl()
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
virtual void* ImplementationDataPtr(); virtual void* ImplementationDataPtr();
@ -278,7 +308,13 @@ class GroupImpl : public Group {
class UnkImpl : public Unk { class UnkImpl : public Unk {
public: public:
UnkImpl() : m_data(0) {} UnkImpl() : m_data(0) {}
~UnkImpl(); ~UnkImpl()
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
virtual void* ImplementationDataPtr(); virtual void* ImplementationDataPtr();
@ -332,7 +368,13 @@ class TglD3DRMIMAGE {
class TextureImpl : public Texture { class TextureImpl : public Texture {
public: public:
TextureImpl() : m_data(0) {} TextureImpl() : m_data(0) {}
~TextureImpl(); ~TextureImpl()
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
virtual void* ImplementationDataPtr(); virtual void* ImplementationDataPtr();

View File

@ -5,14 +5,8 @@ using namespace TglImpl;
DECOMP_SIZE_ASSERT(Light, 0x4); DECOMP_SIZE_ASSERT(Light, 0x4);
DECOMP_SIZE_ASSERT(LightImpl, 0x8); DECOMP_SIZE_ASSERT(LightImpl, 0x8);
// Inlined only // OFFSET: LEGO1 0x100a2640 TEMPLATE
LightImpl::~LightImpl() // TglImpl::LightImpl::`scalar deleting destructor'
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
// OFFSET: LEGO1 0x100a3770 // OFFSET: LEGO1 0x100a3770
void* LightImpl::ImplementationDataPtr() void* LightImpl::ImplementationDataPtr()

View File

@ -13,6 +13,9 @@ Renderer* Tgl::CreateRenderer()
return renderer; return renderer;
} }
// OFFSET: LEGO1 0x100a16d0 TEMPLATE
// TglImpl::RendererImpl::`scalar deleting destructor'
// GLOBAL OFFSET: LEGO1 0x1010103c // GLOBAL OFFSET: LEGO1 0x1010103c
IDirect3DRM* g_pD3DRM = NULL; IDirect3DRM* g_pD3DRM = NULL;
@ -31,12 +34,19 @@ Result RendererImpl::Create()
return (m_data != NULL) ? Success : Error; return (m_data != NULL) ? Success : Error;
} }
inline void RendererDestroy(IDirect3DRM* pRenderer)
{
int refCount = pRenderer->Release();
if (refCount <= 0) {
g_pD3DRM = NULL;
}
}
// Inlined only // Inlined only
void RendererImpl::Destroy() void RendererImpl::Destroy()
{ {
if (m_data) { if (m_data) {
if (m_data->Release() == 0) RendererDestroy(m_data);
g_pD3DRM = NULL;
m_data = NULL; m_data = NULL;
} }
} }

View File

@ -126,14 +126,8 @@ Result TglD3DRMIMAGE::InitializePalette(int paletteSize, PaletteEntry* pEntries)
return Success; return Success;
} }
// Inlined only // OFFSET: LEGO1 0x100a2800 TEMPLATE
TextureImpl::~TextureImpl() // TglImpl::TextureImpl::`scalar deleting destructor'
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
// OFFSET: LEGO1 0x100a3c10 // OFFSET: LEGO1 0x100a3c10
Result TextureImpl::SetTexels(int width, int height, int bitsPerTexel, void* pTexels) Result TextureImpl::SetTexels(int width, int height, int bitsPerTexel, void* pTexels)

View File

@ -5,14 +5,8 @@ using namespace TglImpl;
DECOMP_SIZE_ASSERT(Unk, 0x4); DECOMP_SIZE_ASSERT(Unk, 0x4);
DECOMP_SIZE_ASSERT(UnkImpl, 0x8); DECOMP_SIZE_ASSERT(UnkImpl, 0x8);
// Inlined only // OFFSET: LEGO1 0x100a2720 TEMPLATE
UnkImpl::~UnkImpl() // TglImpl::LightImpl::`scalar deleting destructor'
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
// OFFSET: LEGO1 0x100a3830 // OFFSET: LEGO1 0x100a3830
void* UnkImpl::ImplementationDataPtr() void* UnkImpl::ImplementationDataPtr()

View File

@ -119,14 +119,8 @@ inline IDirect3DRMFrame* ViewportGetLightFrame(IDirect3DRMViewport* pViewport)
return ViewportGetData(pViewport)->m_pLightFrame; return ViewportGetData(pViewport)->m_pLightFrame;
} }
// Inlined only // OFFSET: LEGO1 0x100a23a0 TEMPLATE
ViewImpl::~ViewImpl() // TglImpl::LightImpl::`scalar deleting destructor'
{
if (m_data) {
m_data->Release();
m_data = NULL;
}
}
// OFFSET: LEGO1 0x100a2d80 // OFFSET: LEGO1 0x100a2d80
void* ViewImpl::ImplementationDataPtr() void* ViewImpl::ImplementationDataPtr()