diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2019-04-03 13:49:20 +0300 |
---|---|---|
committer | Konstantin Ritt <ritt.ks@gmail.com> | 2019-04-09 04:27:17 +0000 |
commit | e4cf857dd2766e17ca86114db36f309490f9401d (patch) | |
tree | ac533b095979e62efe6547e7906ff745ba0d9575 | |
parent | da26ff2787b7ab2b8535e6d7725e4ed3496c19aa (diff) |
BatchRenderer: simplify the container usage code a bit
prefer using a modifiable value reference
over `if (!c.contains(key)) c.insert(key, value)`
and `if (c.take(key))` over `if (c.value(key)) c.remove(key)`
Change-Id: I769dcc11cb1cc9d1f4729dac4a7e8d841f33f551
Reviewed-by: Rebecca Worledge <rebecca.worledge@theqtcompany.com>
-rw-r--r-- | src/imports/rasterrenderer/batchrenderer.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/imports/rasterrenderer/batchrenderer.cpp b/src/imports/rasterrenderer/batchrenderer.cpp index 1d1570d..2a6f373 100644 --- a/src/imports/rasterrenderer/batchrenderer.cpp +++ b/src/imports/rasterrenderer/batchrenderer.cpp @@ -111,12 +111,11 @@ void BatchRenderer::deregisterAnimator(LottieAnimation *animator) qCDebug(lcLottieQtBodymovinRenderThread) << "Deregister Animator:" << static_cast<void*>(animator); - Entry *entry = m_animData.value(animator, nullptr); + Entry *entry = m_animData.take(animator); if (entry) { qDeleteAll(entry->frameCache); delete entry->bmTreeBlueprint; delete entry; - m_animData.remove(animator); } } @@ -166,15 +165,14 @@ BMBase *BatchRenderer::getFrame(LottieAnimation *animator, int frameNumber) void BatchRenderer::prerender(Entry *animEntry) { while (animEntry->frameCache.count() < m_cacheSize) { - if (!animEntry->frameCache.contains(animEntry->currentFrame)) { - BMBase *bmTree = new BMBase(*animEntry->bmTreeBlueprint); + BMBase *&bmTree = animEntry->frameCache[animEntry->currentFrame]; + if (bmTree == nullptr) { + bmTree = new BMBase(*animEntry->bmTreeBlueprint); for (BMBase *elem : bmTree->children()) { if (elem->active(animEntry->currentFrame)) elem->updateProperties( animEntry->currentFrame); } - - animEntry->frameCache.insert( animEntry->currentFrame, bmTree); } qCDebug(lcLottieQtBodymovinRenderThread) << "Animator:" @@ -202,10 +200,11 @@ void BatchRenderer::frameRendered(LottieAnimation *animator, int frameNumber) qCDebug(lcLottieQtBodymovinRenderThread) << "Animator:" << static_cast<void*>(animator) << "Remove frame from cache" << frameNumber; - BMBase *root = entry->frameCache.value(frameNumber, nullptr); - delete root; - entry->frameCache.remove(frameNumber); - m_waitCondition.wakeAll(); + BMBase *root = entry->frameCache.take(frameNumber); + if (root != nullptr) { + delete root; + m_waitCondition.wakeAll(); + } } } |