diff --git a/src/lottie/lottieitem.cpp b/src/lottie/lottieitem.cpp index 5533379e12..c3ff6a7643 100644 --- a/src/lottie/lottieitem.cpp +++ b/src/lottie/lottieitem.cpp @@ -692,7 +692,7 @@ void LOTPathDataItem::update(int frameNo, const VMatrix &parentMatrix, // 3. compute the final path with parentMatrix if ((flag & DirtyFlagBit::Matrix) || mPathChanged) { - mFinalPath = tempPath; + mFinalPath.clone(tempPath); mFinalPath.transform(parentMatrix); mPathChanged = true; } diff --git a/src/vector/vpath.h b/src/vector/vpath.h index 2d1858dfa7..3292675d18 100644 --- a/src/vector/vpath.h +++ b/src/vector/vpath.h @@ -45,6 +45,7 @@ public: float length() const; const std::vector &elements() const; const std::vector & points() const; + void clone(const VPath &srcPath); private: struct VPathData { @@ -210,6 +211,11 @@ inline const std::vector &VPath::points() const return d->points(); } +inline void VPath::clone(const VPath &srcPath) +{ + d.write() = srcPath.d.read(); +} + V_END_NAMESPACE #endif // VPATH_H