From: Youngbok Shin Date: Thu, 2 Aug 2018 07:05:20 +0000 (+0900) Subject: lottie/vector: move VPath to raster/drawable methods X-Git-Tag: submit/tizen/20180917.042405~143 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d0d3f3649326034f19c767dcd5a7466844bbcc64;p=platform%2Fcore%2Fuifw%2Flottie-player.git lottie/vector: move VPath to raster/drawable methods It prevents to increase ref count of VPath meaninglessly. It could be helpful to improve performance by avoiding alloc/dealloc/copy. Change-Id: I597ca0ea99cdc10bfe9c83a644d20caeab6162b3 --- diff --git a/src/lottie/lottieitem.cpp b/src/lottie/lottieitem.cpp index c3ff6a7..392c112 100644 --- a/src/lottie/lottieitem.cpp +++ b/src/lottie/lottieitem.cpp @@ -184,7 +184,7 @@ void LOTMaskItem::update(int frameNo, const VMatrix &parentMatrix, VPath path = mLocalPath; path.transform(parentMatrix); - mRleTask = VRaster::instance().generateFillInfo(path, std::move(mRle)); + mRleTask = VRaster::instance().generateFillInfo(std::move(path), std::move(mRle)); } VRle LOTMaskItem::rle() diff --git a/src/vector/vdrawable.cpp b/src/vector/vdrawable.cpp index c04783e..93e7da1 100644 --- a/src/vector/vdrawable.cpp +++ b/src/vector/vdrawable.cpp @@ -6,16 +6,15 @@ void VDrawable::preprocess() { if (mFlag & (DirtyState::Path)) { if (mStroke.enable) { - VPath newPath = mPath; if (mStroke.dashArraySize) { VDasher dasher(mStroke.dashArray, mStroke.dashArraySize); - newPath = dasher.dashed(mPath); + mPath = dasher.dashed(mPath); } mRleTask = VRaster::instance().generateStrokeInfo( - newPath, std::move(mRle), mStroke.cap, mStroke.join, mStroke.width, + std::move(mPath), std::move(mRle), mStroke.cap, mStroke.join, mStroke.width, mStroke.meterLimit); } else { - mRleTask = VRaster::instance().generateFillInfo(mPath, std::move(mRle), mFillRule); + mRleTask = VRaster::instance().generateFillInfo(std::move(mPath), std::move(mRle), mFillRule); } mFlag &= ~DirtyFlag(DirtyState::Path); } diff --git a/src/vector/vraster.cpp b/src/vector/vraster.cpp index 6921984..b327d55 100644 --- a/src/vector/vraster.cpp +++ b/src/vector/vraster.cpp @@ -356,12 +356,12 @@ public: return receiver; } - std::future strokeRle(const VPath &path, VRle &&rle, CapStyle cap, JoinStyle join, + std::future strokeRle(const VPath &&path, VRle &&rle, CapStyle cap, JoinStyle join, float width, float meterLimit) { RleTask *task = new RleTask(); task->stroke = true; - task->path = path; + task->path = std::move(path); task->rle = std::move(rle); task->cap = cap; task->join = join; @@ -370,10 +370,10 @@ public: return async(task); } - std::future fillRle(const VPath &path, VRle &&rle, FillRule fillRule) + std::future fillRle(const VPath &&path, VRle &&rle, FillRule fillRule) { RleTask *task = new RleTask(); - task->path = path; + task->path = std::move(path); task->rle = std::move(rle); task->fillRule = fillRule; task->stroke = false; @@ -387,7 +387,7 @@ VRaster::VRaster() {} VRaster::~VRaster() {} -std::future VRaster::generateFillInfo(const VPath &path, VRle &&rle, +std::future VRaster::generateFillInfo(const VPath &&path, VRle &&rle, FillRule fillRule) { if (path.isEmpty()) { @@ -395,10 +395,10 @@ std::future VRaster::generateFillInfo(const VPath &path, VRle &&rle, promise.set_value(VRle()); return promise.get_future(); } - return raster_scheduler.fillRle(path, std::move(rle), fillRule); + return raster_scheduler.fillRle(std::move(path), std::move(rle), fillRule); } -std::future VRaster::generateStrokeInfo(const VPath &path, VRle &&rle, CapStyle cap, +std::future VRaster::generateStrokeInfo(const VPath &&path, VRle &&rle, CapStyle cap, JoinStyle join, float width, float meterLimit) { @@ -407,7 +407,7 @@ std::future VRaster::generateStrokeInfo(const VPath &path, VRle &&rle, Cap promise.set_value(VRle()); return promise.get_future(); } - return raster_scheduler.strokeRle(path, std::move(rle), cap, join, width, meterLimit); + return raster_scheduler.strokeRle(std::move(path), std::move(rle), cap, join, width, meterLimit); } V_END_NAMESPACE diff --git a/src/vector/vraster.h b/src/vector/vraster.h index 5d47dfe..c41a4ae 100644 --- a/src/vector/vraster.h +++ b/src/vector/vraster.h @@ -22,9 +22,9 @@ public: VRaster &operator=(VRaster const &) = delete; VRaster &operator=(VRaster &&) = delete; - std::future generateFillInfo(const VPath &path, VRle &&rle, + std::future generateFillInfo(const VPath &&path, VRle &&rle, FillRule fillRule = FillRule::Winding); - std::future generateStrokeInfo(const VPath &path, VRle &&rle, CapStyle cap, + std::future generateStrokeInfo(const VPath &&path, VRle &&rle, CapStyle cap, JoinStyle join, float width, float meterLimit);