From 42ea4ebbfbc4caaaaeb79bd4375f6b36c44a900f Mon Sep 17 00:00:00 2001 From: SirLynix Date: Sat, 15 Jul 2023 10:36:03 +0200 Subject: [PATCH] Widgets/BaseWidget: Fix background entity not being released --- src/Nazara/Widgets/BaseWidget.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Nazara/Widgets/BaseWidget.cpp b/src/Nazara/Widgets/BaseWidget.cpp index adb2d0d14..e6bd86770 100644 --- a/src/Nazara/Widgets/BaseWidget.cpp +++ b/src/Nazara/Widgets/BaseWidget.cpp @@ -88,9 +88,12 @@ namespace Nz if (enable) { - m_backgroundSprite = std::make_shared((m_backgroundColor.IsOpaque()) ? Widgets::Instance()->GetOpaqueMaterial() : Widgets::Instance()->GetTransparentMaterial()); - m_backgroundSprite->SetColor(m_backgroundColor); - m_backgroundSprite->UpdateRenderLayer(m_baseRenderLayer); + if (!m_backgroundSprite) + { + m_backgroundSprite = std::make_shared((m_backgroundColor.IsOpaque()) ? Widgets::Instance()->GetOpaqueMaterial() : Widgets::Instance()->GetTransparentMaterial()); + m_backgroundSprite->SetColor(m_backgroundColor); + m_backgroundSprite->UpdateRenderLayer(m_baseRenderLayer); + } entt::entity backgroundEntity = CreateEntity(); m_registry->emplace(backgroundEntity).AttachRenderable(m_backgroundSprite, GetCanvas()->GetRenderMask()); @@ -105,7 +108,7 @@ namespace Nz assert(m_backgroundEntity); DestroyEntity(*m_backgroundEntity); - m_backgroundSprite.reset(); + m_backgroundEntity.reset(); } OnRenderLayerUpdated(GetBaseRenderLayer());