diff --git a/Source/Render/DX7/RenderSystemDX7.cpp b/Source/Render/DX7/RenderSystemDX7.cpp index 737aa4a0..653c0f07 100644 --- a/Source/Render/DX7/RenderSystemDX7.cpp +++ b/Source/Render/DX7/RenderSystemDX7.cpp @@ -29,7 +29,7 @@ int g_configuredBitsPerPixel; // OFFSET: 0x0056AFE0 // FUNCTION: fn_02307 -CRenderSystemDX7::CRenderSystemDX7() : m_defaultTexture(nullptr) { +CRenderSystemDX7::CRenderSystemDX7() { this->m_device = new DeviceOwnerDX7; g_deviceOwnerDX7 = this->m_device; } @@ -39,8 +39,6 @@ CRenderSystemDX7::CRenderSystemDX7() : m_defaultTexture(nullptr) { CRenderSystemDX7::~CRenderSystemDX7() { delete this->m_device; this->m_device = nullptr; - this->m_backBuffer.reset(); - delete this->m_defaultTexture; } // OFFSET: 0x0056B5D0 @@ -80,9 +78,8 @@ CSurface* CRenderSystemDX7::CreateSurfaceOrTexture(std::uint32_t width, std::uin // OFFSET: 0x0056B7C0 // FUNCTION: fn_02321 HRESULT CRenderSystemDX7::Close() { - delete this->m_defaultTexture; - this->m_defaultTexture = nullptr; - this->m_backBuffer.reset(); + this->m_defaultTexture.reset(); + this->m_backBuffer = std::shared_ptr(); return this->m_device->Close(); } @@ -103,10 +100,10 @@ void CRenderSystemDX7::UpdateOption() { // FUNCTION: fn_02328 CTexture* CRenderSystemDX7::BackBufferTexture() { if (!this->m_defaultTexture) { - this->m_defaultTexture = new CTextureDX7(*this->m_device); + this->m_defaultTexture = std::unique_ptr(new CTextureDX7(*this->m_device)); } - return this->m_defaultTexture; + return this->m_defaultTexture.get(); } // OFFSET: 0x0056BC70 @@ -119,7 +116,7 @@ std::uint32_t CRenderSystemDX7::Height() { // FUNCTION: fn_02330 std::shared_ptr CRenderSystemDX7::BackBufferSurface() { if (!this->m_backBuffer) { - this->m_backBuffer = std::make_shared(*this->m_device, this->m_device->renderTarget); + this->m_backBuffer = std::shared_ptr(std::make_shared(*this->m_device, this->m_device->renderTarget)); } return this->m_backBuffer; diff --git a/Source/Render/DX7/RenderSystemDX7.h b/Source/Render/DX7/RenderSystemDX7.h index 76487bcd..91683e02 100644 --- a/Source/Render/DX7/RenderSystemDX7.h +++ b/Source/Render/DX7/RenderSystemDX7.h @@ -42,7 +42,7 @@ public: private: /* 0004 */ DeviceOwnerDX7* m_device; - /* 0008 */ CTextureDX7* m_defaultTexture; + /* 0008 */ std::unique_ptr m_defaultTexture; /* 000C */ std::shared_ptr m_backBuffer; }; diff --git a/Source/Render/RenderSystemBase.h b/Source/Render/RenderSystemBase.h index 36cd4fb3..ea26083f 100644 --- a/Source/Render/RenderSystemBase.h +++ b/Source/Render/RenderSystemBase.h @@ -11,7 +11,8 @@ class CTexture; class CRenderSystemBase { public: - virtual ~CRenderSystemBase() = default; + // INLINED + virtual ~CRenderSystemBase() {} virtual std::int32_t Backend() = 0; virtual HRESULT Initialize(HWND window) = 0; virtual HRESULT Close() = 0;