render: keep a path object in solid and image layer for reuse
authorSubhransu Mohanty <sub.mohanty@samsung.com>
Fri, 14 Aug 2020 09:10:56 +0000 (18:10 +0900)
committerJongmin Lee <jm105.lee@samsung.com>
Mon, 17 Aug 2020 22:22:02 +0000 (07:22 +0900)
src/lottie/lottieitem.cpp
src/lottie/lottieitem.h

index ec7586f8120c0bf334e7753c666032cec6869cdd..4f9379438361267a4a309f8d0547043477c1cb85 100644 (file)
@@ -672,12 +672,12 @@ renderer::SolidLayer::SolidLayer(model::Layer *layerData)
 void renderer::SolidLayer::updateContent()
 {
     if (flag() & DirtyFlagBit::Matrix) {
-        VPath path;
-        path.addRect(VRectF(0, 0, mLayerData->layerSize().width(),
+        mPath.reset();
+        mPath.addRect(VRectF(0, 0, mLayerData->layerSize().width(),
                             mLayerData->layerSize().height()));
-        path.transform(combinedMatrix());
+        mPath.transform(combinedMatrix());
         mRenderNode.mFlag |= VDrawable::DirtyState::Path;
-        mRenderNode.mPath = path;
+        mRenderNode.mPath = mPath;
     }
     if (flag() & DirtyFlagBit::Alpha) {
         model::Color color = mLayerData->solidColor();
@@ -716,12 +716,12 @@ void renderer::ImageLayer::updateContent()
     if (!mLayerData->asset()) return;
 
     if (flag() & DirtyFlagBit::Matrix) {
-        VPath path;
-        path.addRect(VRectF(0, 0, mLayerData->asset()->mWidth,
+        mPath.reset();
+        mPath.addRect(VRectF(0, 0, mLayerData->asset()->mWidth,
                             mLayerData->asset()->mHeight));
-        path.transform(combinedMatrix());
+        mPath.transform(combinedMatrix());
         mRenderNode.mFlag |= VDrawable::DirtyState::Path;
-        mRenderNode.mPath = path;
+        mRenderNode.mPath = mPath;
         mTexture.mMatrix = combinedMatrix();
     }
 
index 99694885b63dfc7422ecacd811e47e8d75e32aab..1fcb561b949527335e58f942ca5772a53541e4f0 100644 (file)
@@ -306,6 +306,7 @@ protected:
 
 private:
     Drawable   mRenderNode;
+    VPath      mPath;
     VDrawable *mDrawableList{nullptr};  // to work with the Span api
 };
 
@@ -348,6 +349,7 @@ protected:
 private:
     Drawable   mRenderNode;
     VTexture   mTexture;
+    VPath      mPath;
     VDrawable *mDrawableList{nullptr};  // to work with the Span api
 };