lottie/optimization: keep a pathmesure object in trim item to avoid memory allocation submit/tizen/20190926.223052
authorsubhransu mohanty <sub.mohanty@samsung.com>
Thu, 26 Sep 2019 01:17:19 +0000 (10:17 +0900)
committerJongmin Lee <jm105.lee@samsung.com>
Thu, 26 Sep 2019 22:00:49 +0000 (07:00 +0900)
src/lottie/lottieitem.cpp
src/lottie/lottieitem.h

index 89241d9..cdb1573 100644 (file)
@@ -1278,10 +1278,8 @@ void LOTTrimItem::update()
 
     if (mData->type() == LOTTrimData::TrimType::Simultaneously) {
         for (auto &i : mPathItems) {
-            VPathMesure pm;
-            pm.setStart(mCache.mSegment.start);
-            pm.setEnd(mCache.mSegment.end);
-            i->updatePath(pm.trim(i->localPath()));
+            mPathMesure.setRange(mCache.mSegment.start, mCache.mSegment.end);
+            i->updatePath(mPathMesure.trim(i->localPath()));
         }
     } else {  // LOTTrimData::TrimType::Individually
         float totalLength = 0.0;
@@ -1315,11 +1313,8 @@ void LOTTrimItem::update()
                     local_start /= len;
                     float local_end = curLen + len < end ? len : end - curLen;
                     local_end /= len;
-                    VPathMesure pm;
-                    pm.setStart(local_start);
-                    pm.setEnd(local_end);
-                    VPath p = pm.trim(i->localPath());
-                    i->updatePath(p);
+                    mPathMesure.setRange(local_start, local_end);
+                    i->updatePath(mPathMesure.trim(i->localPath()));
                     curLen += len;
                 }
             }
index 53fee5c..b297672 100644 (file)
@@ -509,6 +509,7 @@ private:
    Cache                            mCache;
    std::vector<LOTPathDataItem *>   mPathItems;
    LOTTrimData                     *mData;
+   VPathMesure                      mPathMesure;
    bool                             mDirty{true};
 };