From 082a90ec4f843bde871e93ac53f251dab05ea94b Mon Sep 17 00:00:00 2001 From: ZXShady <153229951+ZXShady@users.noreply.github.com> Date: Wed, 18 Sep 2024 13:30:12 +0100 Subject: [PATCH] use unique_ptr to handle memory of sfTexture --- src/CSFML/Graphics/RenderTexture.cpp | 7 +++---- src/CSFML/Graphics/RenderTextureStruct.hpp | 10 ++++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/CSFML/Graphics/RenderTexture.cpp b/src/CSFML/Graphics/RenderTexture.cpp index 1303bf1..e8ae825 100644 --- a/src/CSFML/Graphics/RenderTexture.cpp +++ b/src/CSFML/Graphics/RenderTexture.cpp @@ -53,18 +53,17 @@ sfRenderTexture* sfRenderTexture_create(sfVector2u size, const sfContextSettings if (!renderTexture.resize(convertVector2(size), params)) return nullptr; - auto* texture = new sfTexture(const_cast(&renderTexture.getTexture())); + auto texture = std::make_unique(const_cast(&renderTexture.getTexture())); const auto defaultView = sfView{renderTexture.getDefaultView()}; const auto currentView = sfView{renderTexture.getView()}; - return new sfRenderTexture{std::move(renderTexture), texture, defaultView, currentView}; + return new sfRenderTexture{std::move(renderTexture), std::move(texture), defaultView, currentView}; } //////////////////////////////////////////////////////////// void sfRenderTexture_destroy(const sfRenderTexture* renderTexture) { - delete renderTexture->Target; delete renderTexture; } @@ -275,7 +274,7 @@ void sfRenderTexture_resetGLStates(sfRenderTexture* renderTexture) const sfTexture* sfRenderTexture_getTexture(const sfRenderTexture* renderTexture) { assert(renderTexture); - return renderTexture->Target; + return renderTexture->Target.get(); } diff --git a/src/CSFML/Graphics/RenderTextureStruct.hpp b/src/CSFML/Graphics/RenderTextureStruct.hpp index 69291e5..5335185 100644 --- a/src/CSFML/Graphics/RenderTextureStruct.hpp +++ b/src/CSFML/Graphics/RenderTextureStruct.hpp @@ -32,14 +32,16 @@ #include +#include + //////////////////////////////////////////////////////////// // Internal structure of sfRenderTexture //////////////////////////////////////////////////////////// struct sfRenderTexture { - sf::RenderTexture This; - const sfTexture* Target; - sfView DefaultView; - sfView CurrentView; + sf::RenderTexture This; + std::unique_ptr Target; + sfView DefaultView; + sfView CurrentView; };