lottie/vector: add clone method to copy data without increasing ref count

It helps to improve performance by avoiding copy job from writing COW data.

Change-Id: I72d1c7106fc4fe53fa6db05e7ed8c74f1b70fe95
This commit is contained in:
Youngbok Shin 2018-08-02 13:43:59 +09:00
parent 3ef4a6b6ae
commit a9def49291
2 changed files with 7 additions and 1 deletions

View File

@ -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;
}

View File

@ -45,6 +45,7 @@ public:
float length() const;
const std::vector<VPath::Element> &elements() const;
const std::vector<VPointF> & points() const;
void clone(const VPath &srcPath);
private:
struct VPathData {
@ -210,6 +211,11 @@ inline const std::vector<VPointF> &VPath::points() const
return d->points();
}
inline void VPath::clone(const VPath &srcPath)
{
d.write() = srcPath.d.read();
}
V_END_NAMESPACE
#endif // VPATH_H