From 83bf8be528a2b2e3355e920429e8aa4d5a43abd9 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Fri, 12 Aug 2016 22:41:54 -0700 Subject: [PATCH] Add //flutter/content_handler (flutter/engine#2923) We're now producing a flutter_content_handler binary for Fuchsia that builds and links. --- engine/src/flutter/BUILD.gn | 1 + engine/src/flutter/flow/BUILD.gn | 20 ++++++++++--------- engine/src/flutter/flow/bitmap_image.cc | 16 +++++++++++++++ engine/src/flutter/flow/bitmap_image.h | 17 ++++++++++++++++ engine/src/flutter/flow/texture_image.h | 2 -- ...exture_image.cc => texture_image_gles2.cc} | 16 +++------------ engine/src/flutter/flow/texture_image_none.cc | 14 +++++++++++++ .../flutter/lib/ui/painting/image_decoding.cc | 16 ++++++--------- engine/src/flutter/runtime/dart_init.cc | 3 ++- 9 files changed, 70 insertions(+), 35 deletions(-) create mode 100644 engine/src/flutter/flow/bitmap_image.cc create mode 100644 engine/src/flutter/flow/bitmap_image.h rename engine/src/flutter/flow/{texture_image.cc => texture_image_gles2.cc} (96%) create mode 100644 engine/src/flutter/flow/texture_image_none.cc diff --git a/engine/src/flutter/BUILD.gn b/engine/src/flutter/BUILD.gn index 698b9477c5..452384ad90 100644 --- a/engine/src/flutter/BUILD.gn +++ b/engine/src/flutter/BUILD.gn @@ -8,6 +8,7 @@ group("flutter") { if (is_fuchsia) { # TODO(abarth) Remove this specific list once Fuchsia can build everything. deps = [ + "//flutter/content_handler", "//flutter/flow", "//flutter/runtime", "//flutter/snapshotter", diff --git a/engine/src/flutter/flow/BUILD.gn b/engine/src/flutter/flow/BUILD.gn index 73f69c02d1..1100c403a6 100644 --- a/engine/src/flutter/flow/BUILD.gn +++ b/engine/src/flutter/flow/BUILD.gn @@ -6,8 +6,6 @@ source_set("flow") { sources = [ "compositor_context.cc", "compositor_context.h", - "gl_connection.cc", - "gl_connection.h", "instrumentation.cc", "instrumentation.h", "layers/backdrop_filter_layer.cc", @@ -38,10 +36,10 @@ source_set("flow") { "layers/shader_mask_layer.h", "layers/transform_layer.cc", "layers/transform_layer.h", - "open_gl.h", "raster_cache.cc", "raster_cache.h", - "texture_image.cc", + "bitmap_image.cc", + "bitmap_image.h", "texture_image.h", ] @@ -53,11 +51,15 @@ source_set("flow") { ] if (is_fuchsia) { - # TODO(abarth): In principle, we should add "//mojo/public/c/gpu" as a - # dependency, but that doesn't work currently because GPU support on Fuchsia - # is still a work in progress. - include_dirs = [ - "//mojo/public/c/gpu", + sources += [ + "texture_image_none.cc", + ] + } else { + sources += [ + "gl_connection.cc", + "gl_connection.h", + "open_gl.h", + "texture_image_gles2.cc", ] } } diff --git a/engine/src/flutter/flow/bitmap_image.cc b/engine/src/flutter/flow/bitmap_image.cc new file mode 100644 index 0000000000..69e58d0ac4 --- /dev/null +++ b/engine/src/flutter/flow/bitmap_image.cc @@ -0,0 +1,16 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/flow/bitmap_image.h" + +namespace flow { + +sk_sp BitmapImageCreate(SkImageGenerator& generator) { + SkBitmap bitmap; + if (generator.tryGenerateBitmap(&bitmap)) + return SkImage::MakeFromBitmap(bitmap); + return nullptr; +} + +} // namespace flow diff --git a/engine/src/flutter/flow/bitmap_image.h b/engine/src/flutter/flow/bitmap_image.h new file mode 100644 index 0000000000..3245c53847 --- /dev/null +++ b/engine/src/flutter/flow/bitmap_image.h @@ -0,0 +1,17 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef FLUTTER_FLOW_BITMAP_IMAGE_H_ +#define FLUTTER_FLOW_BITMAP_IMAGE_H_ + +#include "third_party/skia/include/core/SkImage.h" +#include "third_party/skia/include/core/SkImageGenerator.h" + +namespace flow { + +sk_sp BitmapImageCreate(SkImageGenerator& generator); + +} // namespace flow + +#endif // FLUTTER_FLOW_BITMAP_IMAGE_H_ diff --git a/engine/src/flutter/flow/texture_image.h b/engine/src/flutter/flow/texture_image.h index 1596c7b79b..a535537fe6 100644 --- a/engine/src/flutter/flow/texture_image.h +++ b/engine/src/flutter/flow/texture_image.h @@ -13,8 +13,6 @@ namespace flow { sk_sp TextureImageCreate(GrContext* context, SkImageGenerator& generator); -sk_sp BitmapImageCreate(SkImageGenerator& generator); - } // namespace flow #endif // FLUTTER_FLOW_TEXTURE_IMAGE_H_ diff --git a/engine/src/flutter/flow/texture_image.cc b/engine/src/flutter/flow/texture_image_gles2.cc similarity index 96% rename from engine/src/flutter/flow/texture_image.cc rename to engine/src/flutter/flow/texture_image_gles2.cc index f7d1072d9f..ac5e36a096 100644 --- a/engine/src/flutter/flow/texture_image.cc +++ b/engine/src/flutter/flow/texture_image_gles2.cc @@ -2,8 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "flutter/flow/open_gl.h" #include "flutter/flow/texture_image.h" + +#include "flutter/flow/open_gl.h" #include "flutter/glue/trace_event.h" #include "third_party/skia/include/gpu/gl/GrGLTypes.h" @@ -76,9 +77,8 @@ static sk_sp TextureImageCreate(GrContext* context, TRACE_EVENT2("flutter", __func__, "width", size.width(), "height", size.height()); - if (context == nullptr) { + if (!context) return nullptr; - } GLuint handle = GL_NONE; @@ -180,16 +180,6 @@ static sk_sp TextureImageCreate(GrContext* context, ); } -sk_sp BitmapImageCreate(SkImageGenerator& generator) { - SkBitmap bitmap; - - if (generator.tryGenerateBitmap(&bitmap)) { - return SkImage::MakeFromBitmap(bitmap); - } - - return nullptr; -} - sk_sp TextureImageCreate(GrContext* context, SkImageGenerator& generator) { if (context == nullptr) { diff --git a/engine/src/flutter/flow/texture_image_none.cc b/engine/src/flutter/flow/texture_image_none.cc new file mode 100644 index 0000000000..171ffad737 --- /dev/null +++ b/engine/src/flutter/flow/texture_image_none.cc @@ -0,0 +1,14 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/flow/texture_image.h" + +namespace flow { + +sk_sp TextureImageCreate(GrContext* context, + SkImageGenerator& generator) { + return nullptr; +} + +} // namespace flow diff --git a/engine/src/flutter/lib/ui/painting/image_decoding.cc b/engine/src/flutter/lib/ui/painting/image_decoding.cc index 0667e1688b..ea6fb2279e 100644 --- a/engine/src/flutter/lib/ui/painting/image_decoding.cc +++ b/engine/src/flutter/lib/ui/painting/image_decoding.cc @@ -5,6 +5,7 @@ #include "flutter/lib/ui/painting/image_decoding.h" #include "flutter/common/threads.h" +#include "flutter/flow/bitmap_image.h" #include "flutter/flow/texture_image.h" #include "flutter/glue/drain_data_pipe_job.h" #include "flutter/glue/movable_wrapper.h" @@ -28,29 +29,24 @@ namespace { sk_sp DecodeImage(std::vector buffer) { TRACE_EVENT0("blink", "DecodeImage"); - if (buffer.empty()) { + if (buffer.empty()) return nullptr; - } sk_sp sk_data = SkData::MakeWithoutCopy(buffer.data(), buffer.size()); - if (sk_data == nullptr) { + if (sk_data == nullptr) return nullptr; - } std::unique_ptr generator( SkImageGenerator::NewFromEncoded(sk_data.get())); - if (generator == nullptr) { + if (generator == nullptr) return nullptr; - } - - GrContext* context = ResourceContext::Get(); // First, try to create a texture image from the generator. - if (sk_sp image = flow::TextureImageCreate(context, *generator)) { + GrContext* context = ResourceContext::Get(); + if (sk_sp image = flow::TextureImageCreate(context, *generator)) return image; - } // The, as a fallback, try to create a regular Skia managed image. These // don't require a context ready. diff --git a/engine/src/flutter/runtime/dart_init.cc b/engine/src/flutter/runtime/dart_init.cc index 65397b9745..77d5e87828 100644 --- a/engine/src/flutter/runtime/dart_init.cc +++ b/engine/src/flutter/runtime/dart_init.cc @@ -30,6 +30,7 @@ #include "flutter/runtime/dart_service_isolate.h" #include "flutter/runtime/start_up.h" #include "lib/ftl/arraysize.h" +#include "lib/ftl/build_config.h" #include "lib/ftl/files/eintr_wrapper.h" #include "lib/ftl/files/unique_fd.h" #include "lib/ftl/logging.h" @@ -295,7 +296,7 @@ Dart_Isolate IsolateCreateCallback(const char* script_uri, } Dart_Handle GetVMServiceAssetsArchiveCallback() { -#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_RELEASE +#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_RELEASE || defined(OS_FUCHSIA) return nullptr; #else // FLUTTER_RUNTIME_MODE return tonic::DartConverter::ToDart(