diff --git a/src/loaders/lottie/tvgLottieBuilder.cpp b/src/loaders/lottie/tvgLottieBuilder.cpp index 12872c0d..897ed278 100644 --- a/src/loaders/lottie/tvgLottieBuilder.cpp +++ b/src/loaders/lottie/tvgLottieBuilder.cpp @@ -1070,7 +1070,7 @@ static void _updateSolid(LottieLayer* layer) static void _updateImage(LottieGroup* layer) { auto image = static_cast(layer->children.first()); - layer->scene->push(tvg::cast(image->pooling())); + layer->scene->push(tvg::cast(image->pooling(true))); } diff --git a/src/loaders/lottie/tvgLottieRenderPooler.h b/src/loaders/lottie/tvgLottieRenderPooler.h index 4bd818ba..90216a2b 100644 --- a/src/loaders/lottie/tvgLottieRenderPooler.h +++ b/src/loaders/lottie/tvgLottieRenderPooler.h @@ -40,7 +40,7 @@ struct LottieRenderPooler } } - T* pooling() + T* pooling(bool copy = false) { //return available one. for (auto p = pooler.begin(); p < pooler.end(); ++p) { @@ -48,7 +48,7 @@ struct LottieRenderPooler } //no empty, generate a new one. - auto p = static_cast(pooler[0]->duplicate()); + auto p = copy ? static_cast(pooler[0]->duplicate()) : T::gen().release(); PP(p)->ref(); pooler.push(p); return p;