31 if (!Dart_IsClosure(callback_handle)) {
35 if (status_ == Status::kComplete) {
36 if (!cached_image_->image()) {
47 pending_callbacks_.emplace_back(dart_state, callback_handle);
49 if (status_ == Status::kInProgress) {
55 auto decoder = dart_state->GetImageDecoder();
59 "Failed to access the internal image decoder "
60 "registry on this isolate. Please file a bug on "
61 "https://github.com/flutter/flutter/issues.");
73 descriptor_, target_width_, target_height_,
74 [raw_codec_ref](
const auto&
image,
const auto& decode_error) {
75 std::unique_ptr<fml::RefPtr<SingleFrameCodec>> codec_ref(raw_codec_ref);
78 auto state = codec->pending_callbacks_.front().dart_state().lock();
90 auto canvas_image = fml::MakeRefCounted<CanvasImage>();
91 canvas_image->set_image(std::move(
image));
93 codec->cached_image_ = std::move(canvas_image);
98 codec->status_ = Status::kComplete;
102 codec->pending_callbacks_) {
104 {tonic::ToDart(codec->cached_image_),
105 tonic::ToDart(0), tonic::ToDart(decode_error)});
107 codec->pending_callbacks_.clear();
112 descriptor_ =
nullptr;
114 status_ = Status::kInProgress;