From 8a67470f12fa2a159906755269126d4b44e8bd06 Mon Sep 17 00:00:00 2001 From: "Eunki, Hong" Date: Thu, 28 Apr 2022 10:54:47 +0900 Subject: [PATCH] Fix memory leak of visual renderer SceneGraph::Renderer didn't remove the memory of ANimatableVisualProperties. This patch make AnimatableVIsualProperties as OwnerPointer so SceneGraph::Renderer will delete it's memory well. Change-Id: I85f0c40af0fc594b86bd0b9f93f13c24e93b9f8e Signed-off-by: Eunki, Hong --- dali/internal/event/rendering/visual-renderer-impl.h | 4 +++- dali/internal/update/rendering/scene-graph-renderer.h | 17 +++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/dali/internal/event/rendering/visual-renderer-impl.h b/dali/internal/event/rendering/visual-renderer-impl.h index 996ce11..8c402a8 100644 --- a/dali/internal/event/rendering/visual-renderer-impl.h +++ b/dali/internal/event/rendering/visual-renderer-impl.h @@ -142,6 +142,7 @@ public: mPreMultipliedAlpha(0.0f) { } + SceneGraph::AnimatableProperty mTransformOffset; SceneGraph::AnimatableProperty mTransformSize; SceneGraph::AnimatableProperty mTransformOrigin; @@ -150,7 +151,8 @@ public: SceneGraph::AnimatableProperty mExtraSize; SceneGraph::AnimatableProperty mMixColor; SceneGraph::AnimatableProperty mPreMultipliedAlpha; - void* mExtendedProperties{nullptr}; // Enable derived class to extend properties further + + void* mExtendedProperties{nullptr}; // Enable derived class to extend properties further }; private: diff --git a/dali/internal/update/rendering/scene-graph-renderer.h b/dali/internal/update/rendering/scene-graph-renderer.h index b7c1aef..655572d 100644 --- a/dali/internal/update/rendering/scene-graph-renderer.h +++ b/dali/internal/update/rendering/scene-graph-renderer.h @@ -467,7 +467,7 @@ public: // For VisualProperties */ const Internal::VisualRenderer::AnimatableVisualProperties* GetVisualProperties() const { - return mVisualProperties; + return mVisualProperties.Get(); } private: @@ -479,13 +479,14 @@ private: private: CollectedUniformMap mCollectedUniformMap[2]; ///< Uniform maps collected by the renderer - SceneController* mSceneController; ///< Used for initializing renderers - Render::Renderer* mRenderer; ///< Raw pointer to the renderer (that's owned by RenderManager) - TextureSet* mTextureSet; ///< The texture set this renderer uses. (Not owned) - Render::Geometry* mGeometry; ///< The geometry this renderer uses. (Not owned) - Shader* mShader; ///< The shader this renderer uses. (Not owned) - VisualRenderer::AnimatableVisualProperties* mVisualProperties{nullptr}; ///< VisualProperties (optional/owned) - OwnerPointer mBlendColor; ///< The blend color for blending operation + SceneController* mSceneController; ///< Used for initializing renderers + Render::Renderer* mRenderer; ///< Raw pointer to the renderer (that's owned by RenderManager) + TextureSet* mTextureSet; ///< The texture set this renderer uses. (Not owned) + Render::Geometry* mGeometry; ///< The geometry this renderer uses. (Not owned) + Shader* mShader; ///< The shader this renderer uses. (Not owned) + + OwnerPointer mVisualProperties{nullptr}; ///< VisualProperties (optional/owned) + OwnerPointer mBlendColor; ///< The blend color for blending operation Dali::Internal::Render::Renderer::StencilParameters mStencilParameters; ///< Struct containing all stencil related options -- 2.7.4