bool VectorAnimationRendererTizen::Render(uint32_t frameNumber)
{
std::shared_ptr<RenderingDataImpl> renderingDataImpl;
+
+ bool resourceChanged = false;
{
Dali::Mutex::ScopedLock lock(mRenderingDataMutex);
if(DALI_LIKELY(!mFinalized))
mPreviousRenderingData.push_back(mCurrentRenderingData);
mCurrentRenderingData = std::move(mPreparedRenderingData);
mPreparedRenderingData.reset();
- mResourceReady = false;
+ resourceChanged = true;
}
renderingDataImpl = std::static_pointer_cast<RenderingDataImpl>(mCurrentRenderingData);
}
return false;
}
+ if(resourceChanged)
+ {
+ mResourceReady = false;
+ }
+
if(mEnableFixedCache)
{
- if(mDecodedBuffers.size() < mTotalFrameNumber)
+ if(resourceChanged || mDecodedBuffers.size() < mTotalFrameNumber)
{
mDecodedBuffers.clear();
mDecodedBuffers.resize(mTotalFrameNumber, std::make_pair<std::vector<uint8_t>, bool>(std::vector<uint8_t>(), false));
if(mEnableFixedCache && (frameNumber < mDecodedBuffers.size()) && mDecodedBuffers[frameNumber].second)
{
- const int bufferSize = renderingDataImpl->mWidth * renderingDataImpl->mHeight * Dali::Pixel::GetBytesPerPixel(Dali::Pixel::RGBA8888);
+ const size_t bufferSize = mDecodedBuffers[frameNumber].first.size();
memcpy(buffer, &mDecodedBuffers[frameNumber].first[0], bufferSize);
}
else
if(mEnableFixedCache && (frameNumber < mDecodedBuffers.size()))
{
- const uint32_t bufferSize = renderingDataImpl->mWidth * renderingDataImpl->mHeight * Dali::Pixel::GetBytesPerPixel(Dali::Pixel::RGBA8888);
+ const size_t bufferSize = renderingDataImpl->mHeight * static_cast<size_t>(info.planes[0].stride);
std::vector<uint8_t> rasterizeBuffer(buffer, buffer + bufferSize);
mDecodedBuffers[frameNumber].first = std::move(rasterizeBuffer);
mDecodedBuffers[frameNumber].second = true;
bool VectorAnimationRendererX::Render(uint32_t frameNumber)
{
std::shared_ptr<RenderingDataImpl> renderingDataImpl;
+
+ bool resourceChanged = false;
{
Dali::Mutex::ScopedLock lock(mRenderingDataMutex);
if(DALI_LIKELY(!mFinalized))
mPreviousRenderingData.push_back(mCurrentRenderingData);
mCurrentRenderingData = std::move(mPreparedRenderingData);
mPreparedRenderingData.reset();
- mResourceReady = false;
+ resourceChanged = true;
}
renderingDataImpl = std::static_pointer_cast<RenderingDataImpl>(mCurrentRenderingData);
}
return false;
}
+ if(resourceChanged)
+ {
+ mResourceReady = false;
+ }
+
if(!mVectorRenderer || !renderingDataImpl->mPixelBuffer)
{
return false;