From a5f93f517b3fecc65c512a51f2dbaf0485145e5f Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 18 Jul 2019 14:50:45 -0700 Subject: [PATCH] Handle decompressed images in InstantiateImageCodec (flutter/engine#9901) Fixes https://github.com/flutter/flutter/issues/36312 --- engine/src/flutter/lib/ui/painting/codec.cc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/engine/src/flutter/lib/ui/painting/codec.cc b/engine/src/flutter/lib/ui/painting/codec.cc index 1677ddc590..b3fdaf4db5 100644 --- a/engine/src/flutter/lib/ui/painting/codec.cc +++ b/engine/src/flutter/lib/ui/painting/codec.cc @@ -198,16 +198,22 @@ static void InstantiateImageCodec(Dart_NativeArguments args) { const int targetHeight = tonic::DartConverter::FromDart(Dart_GetNativeArgument(args, 4)); - auto codec = SkCodec::MakeFromData(buffer); - - if (!codec) { - Dart_SetReturnValue(args, ToDart("Could not instantiate image codec.")); - return; + std::unique_ptr codec; + bool single_frame; + if (image_info) { + single_frame = true; + } else { + codec = SkCodec::MakeFromData(buffer); + if (!codec) { + Dart_SetReturnValue(args, ToDart("Could not instantiate image codec.")); + return; + } + single_frame = codec->getFrameCount() == 1; } fml::RefPtr ui_codec; - if (codec->getFrameCount() == 1) { + if (single_frame) { ImageDecoder::ImageDescriptor descriptor; descriptor.decompressed_image_info = image_info;