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.");
72 descriptor_, target_width_, target_height_,
73 [raw_codec_ref](
auto image,
auto decode_error) {
74 std::unique_ptr<fml::RefPtr<SingleFrameCodec>> codec_ref(raw_codec_ref);
77 auto state = codec->pending_callbacks_.front().dart_state().lock();
89 auto canvas_image = fml::MakeRefCounted<CanvasImage>();
90 canvas_image->set_image(std::move(
image));
92 codec->cached_image_ = std::move(canvas_image);
97 codec->status_ = Status::kComplete;
101 codec->pending_callbacks_) {
103 {tonic::ToDart(codec->cached_image_),
104 tonic::ToDart(0), tonic::ToDart(decode_error)});
106 codec->pending_callbacks_.clear();
111 descriptor_ =
nullptr;
113 status_ = Status::kInProgress;