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; };