diff --git a/lib/ui/painting/image_decoder_impeller.cc b/lib/ui/painting/image_decoder_impeller.cc index ecb455c1bdaa0..3902ca762b29a 100644 --- a/lib/ui/painting/image_decoder_impeller.cc +++ b/lib/ui/painting/image_decoder_impeller.cc @@ -456,7 +456,11 @@ void ImageDecoderImpeller::Decode(fml::RefPtr descriptor, }); }; +#ifdef FML_OS_ANDROID + runners_.GetIOTaskRunner()->PostTask( +#else concurrent_task_runner_->PostTask( +#endif [raw_descriptor, // context = context_.get(), // target_size = SkISize::Make(target_width, target_height), // @@ -495,12 +499,16 @@ void ImageDecoderImpeller::Decode(fml::RefPtr descriptor, result(image, decode_error); } }; - // TODO(jonahwilliams): - // https://github.com/flutter/flutter/issues/123058 Technically we - // don't need to post tasks to the io runner, but without this - // forced serialization we can end up overloading the GPU and/or - // competing with raster workloads. +// TODO(jonahwilliams): +// https://github.com/flutter/flutter/issues/123058 Technically we +// don't need to post tasks to the io runner, but without this +// forced serialization we can end up overloading the GPU and/or +// competing with raster workloads. +#ifdef FML_OS_ANDROID + upload_texture_and_invoke_result(); +#else io_runner->PostTask(upload_texture_and_invoke_result); +#endif }); }