diff --git a/src/loaders/lottie/tvgLottieBuilder.cpp b/src/loaders/lottie/tvgLottieBuilder.cpp index 052f6788..7ffcd275 100644 --- a/src/loaders/lottie/tvgLottieBuilder.cpp +++ b/src/loaders/lottie/tvgLottieBuilder.cpp @@ -1027,21 +1027,18 @@ static void _updatePrecomp(LottieLayer* precomp, float frameNo, LottieExpression if (!child->matteSrc) _updateLayer(precomp, child, frameNo, exps); } - //TODO: remove the intermediate scene.... - if (precomp->scene->composite(nullptr) != tvg::CompositeMethod::None) { - auto cscene = Scene::gen().release(); - cscene->push(cast(precomp->scene)); - precomp->scene = cscene; - } - //clip the layer viewport - if (!precomp->clipper) { - precomp->clipper = Shape::gen().release(); - precomp->clipper->appendRect(0, 0, static_cast(precomp->w), static_cast(precomp->h)); - PP(precomp->clipper)->ref(); + if (precomp->w > 0 && precomp->h > 0) { + auto clipper = Shape::gen().release(); + clipper->appendRect(0, 0, static_cast(precomp->w), static_cast(precomp->h)); + clipper->transform(precomp->cache.matrix); + + //TODO: remove the intermediate scene.... + auto cscene = Scene::gen(); + cscene->composite(cast(clipper), CompositeMethod::ClipPath); + cscene->push(cast(precomp->scene)); + precomp->scene = cscene.release(); } - precomp->clipper->transform(precomp->cache.matrix); - precomp->scene->composite(cast(precomp->clipper), CompositeMethod::ClipPath); } diff --git a/src/loaders/lottie/tvgLottieModel.cpp b/src/loaders/lottie/tvgLottieModel.cpp index ab7014dc..469f0888 100644 --- a/src/loaders/lottie/tvgLottieModel.cpp +++ b/src/loaders/lottie/tvgLottieModel.cpp @@ -333,7 +333,6 @@ LottieLayer::~LottieLayer() //Remove tvg render paints if (solidFill && PP(solidFill)->unref() == 0) delete(solidFill); - if (clipper && PP(clipper)->unref() == 0) delete(clipper); delete(transform); free(name); diff --git a/src/loaders/lottie/tvgLottieModel.h b/src/loaders/lottie/tvgLottieModel.h index 3cabbde0..8d370360 100644 --- a/src/loaders/lottie/tvgLottieModel.h +++ b/src/loaders/lottie/tvgLottieModel.h @@ -594,7 +594,6 @@ struct LottieLayer : LottieGroup LottieLayer* matteTarget = nullptr; tvg::Shape* solidFill = nullptr; - tvg::Shape* clipper = nullptr; float timeStretch = 1.0f; float w = 0.0f, h = 0.0f;