summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2019-04-03 13:49:20 +0300
committerKonstantin Ritt <ritt.ks@gmail.com>2019-04-09 04:27:17 +0000
commite4cf857dd2766e17ca86114db36f309490f9401d (patch)
treeac533b095979e62efe6547e7906ff745ba0d9575
parentda26ff2787b7ab2b8535e6d7725e4ed3496c19aa (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.cpp19
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();
+ }
}
}