performance increase by not drawing on do nothing frames Change-Id: Ibcd4f0ed468563b22e29d23c7d72b474534d21f3 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299916 Reviewed-by: Derek Sollenberger <djsollen@google.com> Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
diff --git a/platform_tools/android/apps/skottie/skottielib/src/main/cpp/native-lib.cpp b/platform_tools/android/apps/skottie/skottielib/src/main/cpp/native-lib.cpp index 5e384c7..8c32a07 100644 --- a/platform_tools/android/apps/skottie/skottielib/src/main/cpp/native-lib.cpp +++ b/platform_tools/android/apps/skottie/skottielib/src/main/cpp/native-lib.cpp
@@ -23,6 +23,7 @@ #include "include/gpu/gl/GrGLTypes.h" #include "modules/skottie/include/Skottie.h" +#include "modules/sksg/include/SkSGInvalidationController.h" #include <GLES2/gl2.h> #include <GLES2/gl2ext.h> @@ -191,6 +192,15 @@ return; } + sksg::InvalidationController ic; + + if (skottieAnimation->mAnimation) { + skottieAnimation->mAnimation->seek(progress, &ic); + if (ic.bounds().isEmpty()) { + return; + } + } + SkColorType colorType; // setup surface for fbo0 GrGLFramebufferInfo fboInfo; @@ -212,13 +222,10 @@ auto canvas = renderTarget->getCanvas(); canvas->clear(SK_ColorTRANSPARENT); - if (skottieAnimation->mAnimation) { - skottieAnimation->mAnimation->seek(progress); - SkAutoCanvasRestore acr(canvas, true); - SkRect bounds = SkRect::MakeWH(width, height); - skottieAnimation->mAnimation->render(canvas, &bounds); - } + SkAutoCanvasRestore acr(canvas, true); + SkRect bounds = SkRect::MakeWH(width, height); + skottieAnimation->mAnimation->render(canvas, &bounds); canvas->flush(); }