diff --git a/content_handler/framebuffer_skia.cc b/content_handler/framebuffer_skia.cc index 1124e78e1d9c4b2573cafd71c29360c4be2179ec..3fbcd31d2a7a567ec53791bae38ea8fde6d5a149 100644 --- a/content_handler/framebuffer_skia.cc +++ b/content_handler/framebuffer_skia.cc @@ -65,6 +65,7 @@ void FramebufferSkia::Bind(mojo::InterfaceHandle framebuffer, sk_alpha_type = kOpaque_SkAlphaType; break; case mojo::FramebufferFormat::ARGB_8888: + case mojo::FramebufferFormat::RGB_x888: sk_color_type = kRGBA_8888_SkColorType; sk_alpha_type = kPremul_SkAlphaType; break; @@ -89,7 +90,8 @@ void FramebufferSkia::Bind(mojo::InterfaceHandle framebuffer, } void FramebufferSkia::ConvertToCorrectPixelFormatIfNeeded() { - if (info_->format == mojo::FramebufferFormat::ARGB_8888) { + if (info_->format == mojo::FramebufferFormat::ARGB_8888 || + info_->format == mojo::FramebufferFormat::RGB_x888) { // we need to convert from RGBA to ARGB SkPixmap bufferPixmap; @@ -103,4 +105,9 @@ void FramebufferSkia::ConvertToCorrectPixelFormatIfNeeded() { } } +void FramebufferSkia::Finish() { + framebuffer_->Flush([] {}); + framebuffer_.WaitForIncomingResponse(); +} + } // namespace flutter_content_handler diff --git a/content_handler/framebuffer_skia.h b/content_handler/framebuffer_skia.h index 51fd1f22fd5ae7421b086146d69242516ea6de87..16f7bd6ebdf012123c39120414b1a718680605d0 100644 --- a/content_handler/framebuffer_skia.h +++ b/content_handler/framebuffer_skia.h @@ -23,7 +23,7 @@ class FramebufferSkia { // Needed because Skia does not support drawing to ARGB directly. void ConvertToCorrectPixelFormatIfNeeded(); - mojo::Framebuffer* get() const { return framebuffer_.get(); } + void Finish(); const sk_sp& surface() { return surface_; } private: diff --git a/content_handler/rasterizer.cc b/content_handler/rasterizer.cc index fb1964303ebcd9218606cfdc5d7e420b9ac4dccd..d66d9e4414205b59903787c4fdd83af8b2c34a53 100644 --- a/content_handler/rasterizer.cc +++ b/content_handler/rasterizer.cc @@ -36,8 +36,8 @@ void Rasterizer::Draw(std::unique_ptr layer_tree, canvas->flush(); framebuffer_.ConvertToCorrectPixelFormatIfNeeded(); - - framebuffer_.get()->Flush(ftl::MakeRunnable(std::move(callback))); + framebuffer_.Finish(); + callback(); } } // namespace flutter_content_handler