From c2ebc2bcf37d1ba67bd3c1ec66a65aa947ac086e Mon Sep 17 00:00:00 2001 From: Leon Scroggins III Date: Wed, 13 Jan 2021 09:46:06 -0500 Subject: Implement AImageDecoder_setInternallyHandleDisposePrevious Bug: 160984428 Test: I00682f201a52f894b0e1335c00c4368ce675a805 Also fix a bug caught by the new test. If the current frame is the first in a series of one or more RestorePrevious frames, fPriorFrame should be set to |currentFrame - 1|. Otherwise SkCodec will decode the required frame. This is wasted work, since the prior frame should already be prepared (either by AImageDecoder or by the client). Change-Id: I1fb9f91dc66fd3121f187b9a91c15f625eb17f8d --- native/graphics/jni/imagedecoder.cpp | 6 ++++++ native/graphics/jni/libjnigraphics.map.txt | 1 + 2 files changed, 7 insertions(+) (limited to 'native/graphics') diff --git a/native/graphics/jni/imagedecoder.cpp b/native/graphics/jni/imagedecoder.cpp index 0f6190722aa3..5973790e48fd 100644 --- a/native/graphics/jni/imagedecoder.cpp +++ b/native/graphics/jni/imagedecoder.cpp @@ -535,3 +535,9 @@ int32_t AImageDecoderFrameInfo_getBlendOp(const AImageDecoderFrameInfo* info) { return ANDROID_IMAGE_DECODER_BLEND_OP_SRC_OVER; } } + +void AImageDecoder_setInternallyHandleDisposePrevious(AImageDecoder* decoder, bool handle) { + if (decoder) { + toDecoder(decoder)->setHandleRestorePrevious(handle); + } +} diff --git a/native/graphics/jni/libjnigraphics.map.txt b/native/graphics/jni/libjnigraphics.map.txt index d8c3cefd30ca..e0df7945ab0e 100644 --- a/native/graphics/jni/libjnigraphics.map.txt +++ b/native/graphics/jni/libjnigraphics.map.txt @@ -19,6 +19,7 @@ LIBJNIGRAPHICS { AImageDecoder_advanceFrame; # introduced=31 AImageDecoder_rewind; # introduced=31 AImageDecoder_getFrameInfo; # introduced = 31 + AImageDecoder_setInternallyHandleDisposePrevious; # introduced = 31 AImageDecoderHeaderInfo_getWidth; # introduced=30 AImageDecoderHeaderInfo_getHeight; # introduced=30 AImageDecoderHeaderInfo_getMimeType; # introduced=30 -- cgit v1.2.3-59-g8ed1b