16 const sk_sp<DlImage>& dl_image,
17 std::function<
void(sk_sp<SkImage>)> encode_task,
22 const std::shared_ptr<const fml::SyncSwitch>& is_gpu_disabled_sync_switch) {
25 auto skia_image = dl_image->asSkiaImage();
26 auto image = skia_image ? skia_image->skia_image() :
nullptr;
29 if (
image ==
nullptr) {
30 FML_LOG(ERROR) <<
"Image was null.";
35 auto dimensions =
image->dimensions();
37 if (dimensions.isEmpty()) {
38 FML_LOG(ERROR) <<
"Image dimensions were empty.";
44 if (
image->peekPixels(&pixmap)) {
50 if (sk_sp<SkImage> raster_image =
51 image->makeRasterImage(resource_context.
get())) {
53 encode_task(raster_image);
58 if (!raster_task_runner) {
59 FML_LOG(ERROR) <<
"Raster task runner was null.";
64 if (!io_task_runner) {
65 FML_LOG(ERROR) <<
"IO task runner was null.";
73 raster_task_runner->PostTask([dl_image, encode_task = std::move(encode_task),
74 resource_context, snapshot_delegate,
75 io_task_runner, is_gpu_disabled_sync_switch,
76 raster_task_runner]() {
77 auto skia_image = dl_image->asSkiaImage();
78 auto image = skia_image ? skia_image->skia_image() :
nullptr;
79 if (!
image || !snapshot_delegate) {
80 io_task_runner->PostTask(
81 [encode_task = encode_task]()
mutable { encode_task(
nullptr); });
85 sk_sp<SkImage> raster_image =
86 snapshot_delegate->ConvertToRasterImage(
image);
88 io_task_runner->PostTask([
image, encode_task = encode_task,
89 raster_image = std::move(raster_image),
90 resource_context, is_gpu_disabled_sync_switch,
91 owning_context = dl_image->owning_context(),
92 raster_task_runner]()
mutable {
98 image, resource_context, is_gpu_disabled_sync_switch);
100 encode_task(raster_image);
102 raster_task_runner->PostTask([
image = std::move(
image)]() {});
void ConvertImageToRasterSkia(const sk_sp< DlImage > &dl_image, std::function< void(sk_sp< SkImage >)> encode_task, const fml::RefPtr< fml::TaskRunner > &raster_task_runner, const fml::RefPtr< fml::TaskRunner > &io_task_runner, const fml::WeakPtr< GrDirectContext > &resource_context, const fml::TaskRunnerAffineWeakPtr< SnapshotDelegate > &snapshot_delegate, const std::shared_ptr< const fml::SyncSwitch > &is_gpu_disabled_sync_switch)