Fix memory leak of visual renderer 12/274412/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Thu, 28 Apr 2022 01:54:47 +0000 (10:54 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Thu, 28 Apr 2022 02:16:51 +0000 (11:16 +0900)
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 <eunkiki.hong@samsung.com>
dali/internal/event/rendering/visual-renderer-impl.h
dali/internal/update/rendering/scene-graph-renderer.h

index 996ce11..8c402a8 100644 (file)
@@ -142,6 +142,7 @@ public:
       mPreMultipliedAlpha(0.0f)
     {
     }
+
     SceneGraph::AnimatableProperty<Vector2> mTransformOffset;
     SceneGraph::AnimatableProperty<Vector2> mTransformSize;
     SceneGraph::AnimatableProperty<Vector2> mTransformOrigin;
@@ -150,7 +151,8 @@ public:
     SceneGraph::AnimatableProperty<Vector2> mExtraSize;
     SceneGraph::AnimatableProperty<Vector3> mMixColor;
     SceneGraph::AnimatableProperty<float>   mPreMultipliedAlpha;
-    void*                                   mExtendedProperties{nullptr}; // Enable derived class to extend properties further
+
+    void* mExtendedProperties{nullptr}; // Enable derived class to extend properties further
   };
 
 private:
index b7c1aef..655572d 100644 (file)
@@ -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<Vector4>                       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<VisualRenderer::AnimatableVisualProperties> mVisualProperties{nullptr}; ///< VisualProperties (optional/owned)
+  OwnerPointer<Vector4>                                    mBlendColor;                ///< The blend color for blending operation
 
   Dali::Internal::Render::Renderer::StencilParameters mStencilParameters; ///< Struct containing all stencil related options