From 6b41334b099dd39372b9309d543e7fa6c45a6dd0 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Fri, 5 Apr 2019 21:14:40 +0300 Subject: BatchRenderer: handle QLOTTIE_RENDER_CACHE_SIZE env var handling it in every LottieAnimation instance is a waste Change-Id: I4de7673d0de0fc5c3bab04b9db419a62ac8b5580 Reviewed-by: Rebecca Worledge --- src/imports/lottieanimation.cpp | 6 ------ src/imports/rasterrenderer/batchrenderer.cpp | 20 +++++++++++--------- src/imports/rasterrenderer/batchrenderer.h | 3 +-- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/imports/lottieanimation.cpp b/src/imports/lottieanimation.cpp index ea0c308..58e3043 100644 --- a/src/imports/lottieanimation.cpp +++ b/src/imports/lottieanimation.cpp @@ -198,12 +198,6 @@ LottieAnimation::LottieAnimation(QQuickItem *parent) m_frameRenderThread = BatchRenderer::instance(); - QByteArray cacheStr = qgetenv("QLOTTIE_RENDER_CACHE_SIZE"); - bool ok = false; - int cacheSize = cacheStr.toInt(&ok); - if (ok) - m_frameRenderThread->setCacheSize(cacheSize); - qRegisterMetaType(); } diff --git a/src/imports/rasterrenderer/batchrenderer.cpp b/src/imports/rasterrenderer/batchrenderer.cpp index 6b64e7a..eb0cc44 100644 --- a/src/imports/rasterrenderer/batchrenderer.cpp +++ b/src/imports/rasterrenderer/batchrenderer.cpp @@ -52,6 +52,17 @@ Q_LOGGING_CATEGORY(lcLottieQtBodymovinRenderThread, "qt.lottieqt.bodymovin.rende BatchRenderer *BatchRenderer::m_rendererInstance = nullptr; +BatchRenderer::BatchRenderer() + : QThread() +{ + const QByteArray cacheStr = qgetenv("QLOTTIE_RENDER_CACHE_SIZE"); + int cacheSize = cacheStr.toInt(); + if (cacheSize > 0) { + qCDebug(lcLottieQtBodymovinRenderThread) << "Setting frame cache size to" << cacheSize; + m_cacheSize = cacheSize; + } +} + BatchRenderer::~BatchRenderer() { qDeleteAll(m_animData); @@ -149,15 +160,6 @@ BMBase *BatchRenderer::getFrame(LottieAnimation *animator, int frameNumber) return nullptr; } -void BatchRenderer::setCacheSize(int size) -{ - if (size < 1 || isRunning()) - return; - - qCDebug(lcLottieQtBodymovinRenderThread) << "Setting frame cache size to" << size; - m_cacheSize = size; -} - void BatchRenderer::prerender(Entry *animEntry) { while (animEntry->frameCache.count() < m_cacheSize) { diff --git a/src/imports/rasterrenderer/batchrenderer.h b/src/imports/rasterrenderer/batchrenderer.h index 4ede260..7e5830e 100644 --- a/src/imports/rasterrenderer/batchrenderer.h +++ b/src/imports/rasterrenderer/batchrenderer.h @@ -77,7 +77,6 @@ public slots: bool gotoFrame(LottieAnimation *animator, int frame); void frameRendered(LottieAnimation *animator, int frameNumber); - void setCacheSize(int size); protected: void run() override; @@ -87,7 +86,7 @@ protected: void prerender(Entry *animEntry); private: - BatchRenderer() = default; + BatchRenderer(); void pruneFrameCache(Entry* e); -- cgit v1.2.3