From: subhransu mohanty Date: Thu, 9 Aug 2018 00:52:20 +0000 (+0900) Subject: lottie/player: make sure model or composition available before calling api. X-Git-Tag: submit/tizen/20180917.042405~133 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=de6d53632b1954dbc730bdac7707b2af07b2f0fc;p=platform%2Fcore%2Fuifw%2Flottie-player.git lottie/player: make sure model or composition available before calling api. Change-Id: Ia1351bbd076d0e3189d033f708bd3ec281c30cd4 --- diff --git a/src/lottie/lottieplayer.cpp b/src/lottie/lottieplayer.cpp index c55f426..8683b8e 100644 --- a/src/lottie/lottieplayer.cpp +++ b/src/lottie/lottieplayer.cpp @@ -11,7 +11,7 @@ public: LOTPlayerPrivate(); bool setFilePath(std::string path); void setSize(const VSize &sz); - void size(int &w, int &h) const; + VSize size() const; float playTime() const; bool setPos(float pos); float pos(); @@ -31,31 +31,28 @@ private: void LOTPlayerPrivate::setSize(const VSize &sz) { - if (!mCompItem.get()) { - vWarning << "Set file first!"; + mSize = sz; + if (!mCompItem) { return; } mCompItem->resize(sz); } -void LOTPlayerPrivate::size(int &w, int &h) const +VSize LOTPlayerPrivate::size() const { - if (!mCompItem.get()) { - w = 0; - h = 0; - return; + if (!mCompItem) { + return mSize; + } else { + return mCompItem->size(); } - - VSize size = mCompItem->size(); - w = size.width(); - h = size.height(); } const std::vector &LOTPlayerPrivate::renderList() const { - if (!mCompItem.get()) { - // FIXME: Reference is not good... + if (!mCompItem) { + static std::vector empty; + return empty; } return mCompItem->renderList(); @@ -63,7 +60,7 @@ const std::vector &LOTPlayerPrivate::renderList() const float LOTPlayerPrivate::playTime() const { - if (mModel->isStatic()) return 0; + if (!mModel || mModel->isStatic()) return 0; return float(mModel->frameDuration()) / float(mModel->frameRate()); } @@ -88,6 +85,8 @@ float LOTPlayerPrivate::pos() bool LOTPlayerPrivate::render(float pos, const LOTBuffer &buffer) { + if (!mCompItem) return false; + bool renderInProgress = mRenderInProgress.load(); if (renderInProgress) vCritical << "Already Rendering Scheduled for this Player"; @@ -120,6 +119,8 @@ bool LOTPlayerPrivate::setFilePath(std::string path) if (loader.load(path)) { mModel = loader.model(); mCompItem = std::make_unique(mModel.get()); + if (!mSize.isEmpty()) + setSize(mSize); setPos(0); return true; } @@ -235,7 +236,10 @@ void LOTPlayer::setSize(int width, int height) void LOTPlayer::size(int &width, int &height) const { - d->size(width, height); + VSize sz = d->size(); + + width = sz.width(); + height = sz.height(); } float LOTPlayer::playTime() const