From 49d374788d08b3a8478c927e7b53dbf26459e05d Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Tue, 14 Aug 2018 14:57:36 +0900 Subject: [PATCH] lottieplayer: simple optmization for deffered update. This skips unnecessary update process from every user render-request. Change-Id: Id3123bdb31879e1c559b6048ccf60d88dccb690f --- src/lottie/lottieplayer.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/lottie/lottieplayer.cpp b/src/lottie/lottieplayer.cpp index f5fdcee..1b23fd8 100644 --- a/src/lottie/lottieplayer.cpp +++ b/src/lottie/lottieplayer.cpp @@ -30,12 +30,16 @@ public: std::atomic mRenderInProgress; private: - float mPos; + float mPos = 0.0; + bool mChanged = true; }; void LOTPlayerPrivate::setSize(const VSize &sz) { - mSize = sz; + if (mSize != sz) { + mChanged = true; + mSize = sz; + } } VSize LOTPlayerPrivate::size() const @@ -68,6 +72,8 @@ bool LOTPlayerPrivate::setPos(float pos) if (pos > 1.0) pos = 1.0; if (pos < 0) pos = 0; + if (!vCompare(pos, mPos)) mChanged = true; + mPos = pos; return true; @@ -80,6 +86,9 @@ float LOTPlayerPrivate::pos() bool LOTPlayerPrivate::update(float pos) { + //Nothing updated, skip it. + if (!mChanged) return true; + mCompItem->resize(mSize); this->setPos(pos); @@ -89,6 +98,8 @@ bool LOTPlayerPrivate::update(float pos) if (!mCompItem->update(frameNumber)) return false; + mChanged = false; + return true; } @@ -116,7 +127,7 @@ bool LOTPlayerPrivate::render(float pos, const LOTBuffer &buffer) return result; } -LOTPlayerPrivate::LOTPlayerPrivate() : mRenderInProgress(false), mPos(0) {} +LOTPlayerPrivate::LOTPlayerPrivate() : mRenderInProgress(false) {} bool LOTPlayerPrivate::setFilePath(std::string path) { -- 2.34.1