mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Reland "remove surface dependance on external view embedder (#22468)" (flutter/engine#22470)
This commit is contained in:
parent
465c84321e
commit
356e31aef5
@ -667,7 +667,6 @@ FILE: ../../../flutter/shell/common/vsync_waiter_fallback.cc
|
||||
FILE: ../../../flutter/shell/common/vsync_waiter_fallback.h
|
||||
FILE: ../../../flutter/shell/common/vsync_waiters_test.cc
|
||||
FILE: ../../../flutter/shell/common/vsync_waiters_test.h
|
||||
FILE: ../../../flutter/shell/gpu/gpu_surface_delegate.h
|
||||
FILE: ../../../flutter/shell/gpu/gpu_surface_gl.cc
|
||||
FILE: ../../../flutter/shell/gpu/gpu_surface_gl.h
|
||||
FILE: ../../../flutter/shell/gpu/gpu_surface_gl_delegate.cc
|
||||
|
||||
@ -10,10 +10,6 @@ Surface::Surface() = default;
|
||||
|
||||
Surface::~Surface() = default;
|
||||
|
||||
flutter::ExternalViewEmbedder* Surface::GetExternalViewEmbedder() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::unique_ptr<GLContextResult> Surface::MakeRenderContextCurrent() {
|
||||
return std::make_unique<GLContextDefaultResult>(true);
|
||||
}
|
||||
|
||||
@ -29,8 +29,6 @@ class Surface {
|
||||
|
||||
virtual GrDirectContext* GetContext() = 0;
|
||||
|
||||
virtual flutter::ExternalViewEmbedder* GetExternalViewEmbedder();
|
||||
|
||||
virtual std::unique_ptr<GLContextResult> MakeRenderContextCurrent();
|
||||
|
||||
virtual bool ClearRenderContext();
|
||||
|
||||
@ -563,6 +563,8 @@ class PlatformView {
|
||||
ComputePlatformResolvedLocales(
|
||||
const std::vector<std::string>& supported_locale_data);
|
||||
|
||||
virtual std::shared_ptr<ExternalViewEmbedder> CreateExternalViewEmbedder();
|
||||
|
||||
protected:
|
||||
PlatformView::Delegate& delegate_;
|
||||
const TaskRunners task_runners_;
|
||||
@ -575,8 +577,6 @@ class PlatformView {
|
||||
// GPU task runner.
|
||||
virtual std::unique_ptr<Surface> CreateRenderingSurface();
|
||||
|
||||
virtual std::shared_ptr<ExternalViewEmbedder> CreateExternalViewEmbedder();
|
||||
|
||||
private:
|
||||
FML_DISALLOW_COPY_AND_ASSIGN(PlatformView);
|
||||
};
|
||||
|
||||
@ -76,8 +76,8 @@ void Rasterizer::Setup(std::unique_ptr<Surface> surface) {
|
||||
user_override_resource_cache_bytes_);
|
||||
}
|
||||
compositor_context_->OnGrContextCreated();
|
||||
if (surface_->GetExternalViewEmbedder() &&
|
||||
surface_->GetExternalViewEmbedder()->SupportsDynamicThreadMerging() &&
|
||||
if (external_view_embedder_ &&
|
||||
external_view_embedder_->SupportsDynamicThreadMerging() &&
|
||||
!raster_thread_merger_) {
|
||||
const auto platform_id =
|
||||
delegate_.GetTaskRunners().GetPlatformTaskRunner()->GetTaskQueueId();
|
||||
@ -191,9 +191,9 @@ void Rasterizer::Draw(fml::RefPtr<Pipeline<flutter::LayerTree>> pipeline,
|
||||
}
|
||||
|
||||
// EndFrame should perform cleanups for the external_view_embedder.
|
||||
if (surface_ != nullptr && surface_->GetExternalViewEmbedder() != nullptr) {
|
||||
surface_->GetExternalViewEmbedder()->EndFrame(should_resubmit_frame,
|
||||
raster_thread_merger_);
|
||||
if (surface_ && external_view_embedder_) {
|
||||
external_view_embedder_->EndFrame(should_resubmit_frame,
|
||||
raster_thread_merger_);
|
||||
}
|
||||
|
||||
// Consume as many pipeline items as possible. But yield the event loop
|
||||
@ -423,14 +423,12 @@ RasterStatus Rasterizer::DrawToSurface(flutter::LayerTree& layer_tree) {
|
||||
// for instrumentation.
|
||||
compositor_context_->ui_time().SetLapTime(layer_tree.build_time());
|
||||
|
||||
auto* external_view_embedder = surface_->GetExternalViewEmbedder();
|
||||
|
||||
SkCanvas* embedder_root_canvas = nullptr;
|
||||
if (external_view_embedder != nullptr) {
|
||||
external_view_embedder->BeginFrame(
|
||||
if (external_view_embedder_) {
|
||||
external_view_embedder_->BeginFrame(
|
||||
layer_tree.frame_size(), surface_->GetContext(),
|
||||
layer_tree.device_pixel_ratio(), raster_thread_merger_);
|
||||
embedder_root_canvas = external_view_embedder->GetRootCanvas();
|
||||
embedder_root_canvas = external_view_embedder_->GetRootCanvas();
|
||||
}
|
||||
|
||||
// On Android, the external view embedder deletes surfaces in `BeginFrame`.
|
||||
@ -453,13 +451,13 @@ RasterStatus Rasterizer::DrawToSurface(flutter::LayerTree& layer_tree) {
|
||||
embedder_root_canvas ? embedder_root_canvas : frame->SkiaCanvas();
|
||||
|
||||
auto compositor_frame = compositor_context_->AcquireFrame(
|
||||
surface_->GetContext(), // skia GrContext
|
||||
root_surface_canvas, // root surface canvas
|
||||
external_view_embedder, // external view embedder
|
||||
root_surface_transformation, // root surface transformation
|
||||
true, // instrumentation enabled
|
||||
frame->supports_readback(), // surface supports pixel reads
|
||||
raster_thread_merger_ // thread merger
|
||||
surface_->GetContext(), // skia GrContext
|
||||
root_surface_canvas, // root surface canvas
|
||||
external_view_embedder_.get(), // external view embedder
|
||||
root_surface_transformation, // root surface transformation
|
||||
true, // instrumentation enabled
|
||||
frame->supports_readback(), // surface supports pixel reads
|
||||
raster_thread_merger_ // thread merger
|
||||
);
|
||||
|
||||
if (compositor_frame) {
|
||||
@ -468,11 +466,11 @@ RasterStatus Rasterizer::DrawToSurface(flutter::LayerTree& layer_tree) {
|
||||
raster_status == RasterStatus::kSkipAndRetry) {
|
||||
return raster_status;
|
||||
}
|
||||
if (external_view_embedder != nullptr &&
|
||||
if (external_view_embedder_ &&
|
||||
(!raster_thread_merger_ || raster_thread_merger_->IsMerged())) {
|
||||
FML_DCHECK(!frame->IsSubmitted());
|
||||
external_view_embedder->SubmitFrame(surface_->GetContext(),
|
||||
std::move(frame));
|
||||
external_view_embedder_->SubmitFrame(surface_->GetContext(),
|
||||
std::move(frame));
|
||||
} else {
|
||||
frame->Submit();
|
||||
}
|
||||
@ -653,6 +651,11 @@ void Rasterizer::SetNextFrameCallback(const fml::closure& callback) {
|
||||
next_frame_callback_ = callback;
|
||||
}
|
||||
|
||||
void Rasterizer::SetExternalViewEmbedder(
|
||||
const std::shared_ptr<ExternalViewEmbedder>& view_embedder) {
|
||||
external_view_embedder_ = view_embedder;
|
||||
}
|
||||
|
||||
void Rasterizer::FireNextFrameCallbackIfPresent() {
|
||||
if (!next_frame_callback_) {
|
||||
return;
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
|
||||
#include "flow/embedded_views.h"
|
||||
#include "flutter/common/settings.h"
|
||||
#include "flutter/common/task_runners.h"
|
||||
#include "flutter/flow/compositor_context.h"
|
||||
@ -349,6 +350,16 @@ class Rasterizer final : public SnapshotDelegate {
|
||||
///
|
||||
void SetNextFrameCallback(const fml::closure& callback);
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
/// @brief Set the External View Embedder. This is done on shell
|
||||
/// initialization. This is non-null on platforms that support
|
||||
/// embedding externally composited views.
|
||||
///
|
||||
/// @param[in] view_embedder The external view embedder object.
|
||||
///
|
||||
void SetExternalViewEmbedder(
|
||||
const std::shared_ptr<ExternalViewEmbedder>& view_embedder);
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
/// @brief Returns a pointer to the compositor context used by this
|
||||
/// rasterizer. This pointer will never be `nullptr`.
|
||||
@ -437,6 +448,7 @@ class Rasterizer final : public SnapshotDelegate {
|
||||
std::optional<size_t> max_cache_bytes_;
|
||||
fml::RefPtr<fml::RasterThreadMerger> raster_thread_merger_;
|
||||
fml::TaskRunnerAffineWeakPtrFactory<Rasterizer> weak_factory_;
|
||||
std::shared_ptr<ExternalViewEmbedder> external_view_embedder_;
|
||||
|
||||
// |SnapshotDelegate|
|
||||
sk_sp<SkImage> MakeRasterSnapshot(sk_sp<SkPicture> picture,
|
||||
|
||||
@ -113,9 +113,9 @@ TEST(RasterizerTest,
|
||||
auto rasterizer = std::make_unique<Rasterizer>(delegate);
|
||||
auto surface = std::make_unique<MockSurface>();
|
||||
|
||||
MockExternalViewEmbedder external_view_embedder;
|
||||
EXPECT_CALL(*surface, GetExternalViewEmbedder())
|
||||
.WillRepeatedly(Return(&external_view_embedder));
|
||||
std::shared_ptr<MockExternalViewEmbedder> external_view_embedder =
|
||||
std::make_shared<MockExternalViewEmbedder>();
|
||||
rasterizer->SetExternalViewEmbedder(external_view_embedder);
|
||||
|
||||
auto surface_frame = std::make_unique<SurfaceFrame>(
|
||||
/*surface=*/nullptr, /*supports_readback=*/true,
|
||||
@ -123,15 +123,15 @@ TEST(RasterizerTest,
|
||||
EXPECT_CALL(*surface, AcquireFrame(SkISize()))
|
||||
.WillOnce(Return(ByMove(std::move(surface_frame))));
|
||||
|
||||
EXPECT_CALL(external_view_embedder,
|
||||
EXPECT_CALL(*external_view_embedder,
|
||||
BeginFrame(/*frame_size=*/SkISize(), /*context=*/nullptr,
|
||||
/*device_pixel_ratio=*/2.0,
|
||||
/*raster_thread_merger=*/
|
||||
fml::RefPtr<fml::RasterThreadMerger>(nullptr)))
|
||||
.Times(1);
|
||||
EXPECT_CALL(external_view_embedder, SubmitFrame).Times(1);
|
||||
EXPECT_CALL(*external_view_embedder, SubmitFrame).Times(1);
|
||||
EXPECT_CALL(
|
||||
external_view_embedder,
|
||||
*external_view_embedder,
|
||||
EndFrame(/*should_resubmit_frame=*/false,
|
||||
/*raster_thread_merger=*/fml::RefPtr<fml::RasterThreadMerger>(
|
||||
nullptr)))
|
||||
@ -170,10 +170,10 @@ TEST(
|
||||
EXPECT_CALL(delegate, OnFrameRasterized(_));
|
||||
auto rasterizer = std::make_unique<Rasterizer>(delegate);
|
||||
auto surface = std::make_unique<MockSurface>();
|
||||
MockExternalViewEmbedder external_view_embedder;
|
||||
EXPECT_CALL(*surface, GetExternalViewEmbedder())
|
||||
.WillRepeatedly(Return(&external_view_embedder));
|
||||
EXPECT_CALL(external_view_embedder, SupportsDynamicThreadMerging)
|
||||
std::shared_ptr<MockExternalViewEmbedder> external_view_embedder =
|
||||
std::make_shared<MockExternalViewEmbedder>();
|
||||
rasterizer->SetExternalViewEmbedder(external_view_embedder);
|
||||
EXPECT_CALL(*external_view_embedder, SupportsDynamicThreadMerging)
|
||||
.WillRepeatedly(Return(true));
|
||||
auto surface_frame = std::make_unique<SurfaceFrame>(
|
||||
/*surface=*/nullptr, /*supports_readback=*/true,
|
||||
@ -181,14 +181,14 @@ TEST(
|
||||
EXPECT_CALL(*surface, AcquireFrame(SkISize()))
|
||||
.WillOnce(Return(ByMove(std::move(surface_frame))));
|
||||
|
||||
EXPECT_CALL(external_view_embedder,
|
||||
EXPECT_CALL(*external_view_embedder,
|
||||
BeginFrame(/*frame_size=*/SkISize(), /*context=*/nullptr,
|
||||
/*device_pixel_ratio=*/2.0,
|
||||
/*raster_thread_merger=*/_))
|
||||
.Times(1);
|
||||
EXPECT_CALL(external_view_embedder, SubmitFrame).Times(0);
|
||||
EXPECT_CALL(external_view_embedder, EndFrame(/*should_resubmit_frame=*/false,
|
||||
/*raster_thread_merger=*/_))
|
||||
EXPECT_CALL(*external_view_embedder, SubmitFrame).Times(0);
|
||||
EXPECT_CALL(*external_view_embedder, EndFrame(/*should_resubmit_frame=*/false,
|
||||
/*raster_thread_merger=*/_))
|
||||
.Times(1);
|
||||
|
||||
rasterizer->Setup(std::move(surface));
|
||||
@ -229,26 +229,26 @@ TEST(
|
||||
auto rasterizer = std::make_unique<Rasterizer>(delegate);
|
||||
auto surface = std::make_unique<MockSurface>();
|
||||
|
||||
MockExternalViewEmbedder external_view_embedder;
|
||||
EXPECT_CALL(*surface, GetExternalViewEmbedder())
|
||||
.WillRepeatedly(Return(&external_view_embedder));
|
||||
std::shared_ptr<MockExternalViewEmbedder> external_view_embedder =
|
||||
std::make_shared<MockExternalViewEmbedder>();
|
||||
rasterizer->SetExternalViewEmbedder(external_view_embedder);
|
||||
|
||||
auto surface_frame = std::make_unique<SurfaceFrame>(
|
||||
/*surface=*/nullptr, /*supports_readback=*/true,
|
||||
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; });
|
||||
EXPECT_CALL(*surface, AcquireFrame(SkISize()))
|
||||
.WillOnce(Return(ByMove(std::move(surface_frame))));
|
||||
EXPECT_CALL(external_view_embedder, SupportsDynamicThreadMerging)
|
||||
EXPECT_CALL(*external_view_embedder, SupportsDynamicThreadMerging)
|
||||
.WillRepeatedly(Return(true));
|
||||
|
||||
EXPECT_CALL(external_view_embedder,
|
||||
EXPECT_CALL(*external_view_embedder,
|
||||
BeginFrame(/*frame_size=*/SkISize(), /*context=*/nullptr,
|
||||
/*device_pixel_ratio=*/2.0,
|
||||
/*raster_thread_merger=*/_))
|
||||
.Times(1);
|
||||
EXPECT_CALL(external_view_embedder, SubmitFrame).Times(1);
|
||||
EXPECT_CALL(external_view_embedder, EndFrame(/*should_resubmit_frame=*/false,
|
||||
/*raster_thread_merger=*/_))
|
||||
EXPECT_CALL(*external_view_embedder, SubmitFrame).Times(1);
|
||||
EXPECT_CALL(*external_view_embedder, EndFrame(/*should_resubmit_frame=*/false,
|
||||
/*raster_thread_merger=*/_))
|
||||
.Times(1);
|
||||
|
||||
rasterizer->Setup(std::move(surface));
|
||||
@ -261,4 +261,40 @@ TEST(
|
||||
auto no_discard = [](LayerTree&) { return false; };
|
||||
rasterizer->Draw(pipeline, no_discard);
|
||||
}
|
||||
|
||||
TEST(RasterizerTest, externalViewEmbedderDoesntEndFrameWhenNoSurfaceIsSet) {
|
||||
std::string test_name =
|
||||
::testing::UnitTest::GetInstance()->current_test_info()->name();
|
||||
ThreadHost thread_host("io.flutter.test." + test_name + ".",
|
||||
ThreadHost::Type::Platform | ThreadHost::Type::GPU |
|
||||
ThreadHost::Type::IO | ThreadHost::Type::UI);
|
||||
TaskRunners task_runners("test", thread_host.platform_thread->GetTaskRunner(),
|
||||
thread_host.raster_thread->GetTaskRunner(),
|
||||
thread_host.ui_thread->GetTaskRunner(),
|
||||
thread_host.io_thread->GetTaskRunner());
|
||||
MockDelegate delegate;
|
||||
EXPECT_CALL(delegate, GetTaskRunners())
|
||||
.WillRepeatedly(ReturnRef(task_runners));
|
||||
auto rasterizer = std::make_unique<Rasterizer>(delegate);
|
||||
|
||||
std::shared_ptr<MockExternalViewEmbedder> external_view_embedder =
|
||||
std::make_shared<MockExternalViewEmbedder>();
|
||||
rasterizer->SetExternalViewEmbedder(external_view_embedder);
|
||||
|
||||
EXPECT_CALL(
|
||||
*external_view_embedder,
|
||||
EndFrame(/*should_resubmit_frame=*/false,
|
||||
/*raster_thread_merger=*/fml::RefPtr<fml::RasterThreadMerger>(
|
||||
nullptr)))
|
||||
.Times(0);
|
||||
|
||||
fml::AutoResetWaitableEvent latch;
|
||||
thread_host.raster_thread->GetTaskRunner()->PostTask([&] {
|
||||
auto pipeline = fml::AdoptRef(new Pipeline<LayerTree>(/*depth=*/10));
|
||||
auto no_discard = [](LayerTree&) { return false; };
|
||||
rasterizer->Draw(pipeline, no_discard);
|
||||
latch.Signal();
|
||||
});
|
||||
latch.Wait();
|
||||
}
|
||||
} // namespace flutter
|
||||
|
||||
@ -547,6 +547,10 @@ bool Shell::Setup(std::unique_ptr<PlatformView> platform_view,
|
||||
rasterizer_ = std::move(rasterizer);
|
||||
io_manager_ = std::move(io_manager);
|
||||
|
||||
// Set the external view embedder for the rasterizer.
|
||||
auto view_embedder = platform_view_->CreateExternalViewEmbedder();
|
||||
rasterizer_->SetExternalViewEmbedder(view_embedder);
|
||||
|
||||
// The weak ptr must be generated in the platform thread which owns the unique
|
||||
// ptr.
|
||||
weak_engine_ = engine_->GetWeakPtr();
|
||||
|
||||
@ -79,10 +79,5 @@ ShellTestPlatformViewGL::GetGLProcResolver() const {
|
||||
};
|
||||
}
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
ExternalViewEmbedder* ShellTestPlatformViewGL::GetExternalViewEmbedder() {
|
||||
return shell_test_external_view_embedder_.get();
|
||||
}
|
||||
|
||||
} // namespace testing
|
||||
} // namespace flutter
|
||||
|
||||
@ -64,9 +64,6 @@ class ShellTestPlatformViewGL : public ShellTestPlatformView,
|
||||
// |GPUSurfaceGLDelegate|
|
||||
GLProcResolver GetGLProcResolver() const override;
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
FML_DISALLOW_COPY_AND_ASSIGN(ShellTestPlatformViewGL);
|
||||
};
|
||||
|
||||
|
||||
@ -198,10 +198,5 @@ SkMatrix ShellTestPlatformViewVulkan::OffScreenSurface::GetRootTransformation()
|
||||
return matrix;
|
||||
}
|
||||
|
||||
flutter::ExternalViewEmbedder*
|
||||
ShellTestPlatformViewVulkan::OffScreenSurface::GetExternalViewEmbedder() {
|
||||
return shell_test_external_view_embedder_.get();
|
||||
}
|
||||
|
||||
} // namespace testing
|
||||
} // namespace flutter
|
||||
|
||||
@ -47,8 +47,6 @@ class ShellTestPlatformViewVulkan : public ShellTestPlatformView {
|
||||
// |Surface|
|
||||
GrDirectContext* GetContext() override;
|
||||
|
||||
flutter::ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
private:
|
||||
bool valid_;
|
||||
fml::RefPtr<vulkan::VulkanProcTable> vk_;
|
||||
|
||||
@ -16,7 +16,6 @@ gpu_common_deps = [
|
||||
|
||||
source_set("gpu_surface_software") {
|
||||
sources = [
|
||||
"gpu_surface_delegate.h",
|
||||
"gpu_surface_software.cc",
|
||||
"gpu_surface_software.h",
|
||||
"gpu_surface_software_delegate.cc",
|
||||
@ -28,7 +27,6 @@ source_set("gpu_surface_software") {
|
||||
|
||||
source_set("gpu_surface_gl") {
|
||||
sources = [
|
||||
"gpu_surface_delegate.h",
|
||||
"gpu_surface_gl.cc",
|
||||
"gpu_surface_gl.h",
|
||||
"gpu_surface_gl_delegate.cc",
|
||||
@ -40,7 +38,6 @@ source_set("gpu_surface_gl") {
|
||||
|
||||
source_set("gpu_surface_vulkan") {
|
||||
sources = [
|
||||
"gpu_surface_delegate.h",
|
||||
"gpu_surface_vulkan.cc",
|
||||
"gpu_surface_vulkan.h",
|
||||
"gpu_surface_vulkan_delegate.cc",
|
||||
@ -52,7 +49,6 @@ source_set("gpu_surface_vulkan") {
|
||||
|
||||
source_set("gpu_surface_metal") {
|
||||
sources = [
|
||||
"gpu_surface_delegate.h",
|
||||
"gpu_surface_metal.h",
|
||||
"gpu_surface_metal.mm",
|
||||
]
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
#ifndef FLUTTER_SHELL_GPU_GPU_SURFACE_DELEGATE_H_
|
||||
#define FLUTTER_SHELL_GPU_GPU_SURFACE_DELEGATE_H_
|
||||
|
||||
#include "flutter/flow/embedded_views.h"
|
||||
|
||||
namespace flutter {
|
||||
|
||||
class GPUSurfaceDelegate {
|
||||
public:
|
||||
virtual ~GPUSurfaceDelegate() {}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
/// @brief Gets the view embedder that controls how the Flutter layer
|
||||
/// hierarchy split into multiple chunks should be composited back
|
||||
/// on-screen. This field is optional and the Flutter rasterizer
|
||||
/// will render into a single on-screen surface if this call
|
||||
/// returns a null external view embedder. This happens on the GPU
|
||||
/// thread.
|
||||
///
|
||||
/// @return The external view embedder, or, null if Flutter is rendering
|
||||
/// into a single on-screen surface.
|
||||
///
|
||||
virtual ExternalViewEmbedder* GetExternalViewEmbedder() = 0;
|
||||
};
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
#endif // FLUTTER_SHELL_GPU_GPU_SURFACE_DELEGATE_H_
|
||||
@ -333,11 +333,6 @@ GrDirectContext* GPUSurfaceGL::GetContext() {
|
||||
return context_.get();
|
||||
}
|
||||
|
||||
// |Surface|
|
||||
flutter::ExternalViewEmbedder* GPUSurfaceGL::GetExternalViewEmbedder() {
|
||||
return delegate_->GetExternalViewEmbedder();
|
||||
}
|
||||
|
||||
// |Surface|
|
||||
std::unique_ptr<GLContextResult> GPUSurfaceGL::MakeRenderContextCurrent() {
|
||||
return delegate_->GLContextMakeCurrent();
|
||||
|
||||
@ -42,9 +42,6 @@ class GPUSurfaceGL : public Surface {
|
||||
// |Surface|
|
||||
GrDirectContext* GetContext() override;
|
||||
|
||||
// |Surface|
|
||||
flutter::ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
// |Surface|
|
||||
std::unique_ptr<GLContextResult> MakeRenderContextCurrent() override;
|
||||
|
||||
|
||||
@ -99,8 +99,4 @@ GPUSurfaceGLDelegate::GetDefaultPlatformGLInterface() {
|
||||
return CreateGLInterface(nullptr);
|
||||
}
|
||||
|
||||
ExternalViewEmbedder* GPUSurfaceGLDelegate::GetExternalViewEmbedder() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -8,7 +8,6 @@
|
||||
#include "flutter/common/graphics/gl_context_switch.h"
|
||||
#include "flutter/flow/embedded_views.h"
|
||||
#include "flutter/fml/macros.h"
|
||||
#include "flutter/shell/gpu/gpu_surface_delegate.h"
|
||||
#include "third_party/skia/include/core/SkMatrix.h"
|
||||
#include "third_party/skia/include/gpu/gl/GrGLInterface.h"
|
||||
|
||||
@ -21,12 +20,9 @@ struct GLFrameInfo {
|
||||
uint32_t height;
|
||||
};
|
||||
|
||||
class GPUSurfaceGLDelegate : public GPUSurfaceDelegate {
|
||||
class GPUSurfaceGLDelegate {
|
||||
public:
|
||||
~GPUSurfaceGLDelegate() override;
|
||||
|
||||
// |GPUSurfaceDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
~GPUSurfaceGLDelegate();
|
||||
|
||||
// Called to make the main GL context current on the current thread.
|
||||
virtual std::unique_ptr<GLContextResult> GLContextMakeCurrent() = 0;
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
#include "flutter/flow/surface.h"
|
||||
#include "flutter/fml/macros.h"
|
||||
#include "flutter/fml/platform/darwin/scoped_nsobject.h"
|
||||
#include "flutter/shell/gpu/gpu_surface_delegate.h"
|
||||
#include "third_party/skia/include/gpu/GrDirectContext.h"
|
||||
#include "third_party/skia/include/gpu/mtl/GrMtlTypes.h"
|
||||
|
||||
@ -20,16 +19,14 @@ namespace flutter {
|
||||
|
||||
class SK_API_AVAILABLE_CA_METAL_LAYER GPUSurfaceMetal : public Surface {
|
||||
public:
|
||||
GPUSurfaceMetal(GPUSurfaceDelegate* delegate,
|
||||
fml::scoped_nsobject<CAMetalLayer> layer,
|
||||
GPUSurfaceMetal(fml::scoped_nsobject<CAMetalLayer> layer,
|
||||
sk_sp<GrDirectContext> context,
|
||||
fml::scoped_nsprotocol<id<MTLCommandQueue>> command_queue);
|
||||
|
||||
// |Surface|
|
||||
~GPUSurfaceMetal() override;
|
||||
~GPUSurfaceMetal();
|
||||
|
||||
private:
|
||||
GPUSurfaceDelegate* delegate_;
|
||||
fml::scoped_nsobject<CAMetalLayer> layer_;
|
||||
sk_sp<GrDirectContext> context_;
|
||||
fml::scoped_nsprotocol<id<MTLCommandQueue>> command_queue_;
|
||||
@ -47,9 +44,6 @@ class SK_API_AVAILABLE_CA_METAL_LAYER GPUSurfaceMetal : public Surface {
|
||||
// |Surface|
|
||||
GrDirectContext* GetContext() override;
|
||||
|
||||
// |Surface|
|
||||
flutter::ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
// |Surface|
|
||||
std::unique_ptr<GLContextResult> MakeRenderContextCurrent() override;
|
||||
|
||||
|
||||
@ -15,12 +15,10 @@ static_assert(!__has_feature(objc_arc), "ARC must be disabled.");
|
||||
|
||||
namespace flutter {
|
||||
|
||||
GPUSurfaceMetal::GPUSurfaceMetal(GPUSurfaceDelegate* delegate,
|
||||
fml::scoped_nsobject<CAMetalLayer> layer,
|
||||
GPUSurfaceMetal::GPUSurfaceMetal(fml::scoped_nsobject<CAMetalLayer> layer,
|
||||
sk_sp<GrDirectContext> context,
|
||||
fml::scoped_nsprotocol<id<MTLCommandQueue>> command_queue)
|
||||
: delegate_(delegate),
|
||||
layer_(std::move(layer)),
|
||||
: layer_(std::move(layer)),
|
||||
context_(std::move(context)),
|
||||
command_queue_(std::move(command_queue)) {
|
||||
layer_.get().pixelFormat = MTLPixelFormatBGRA8Unorm;
|
||||
@ -121,11 +119,6 @@ GrDirectContext* GPUSurfaceMetal::GetContext() {
|
||||
return context_.get();
|
||||
}
|
||||
|
||||
// |Surface|
|
||||
flutter::ExternalViewEmbedder* GPUSurfaceMetal::GetExternalViewEmbedder() {
|
||||
return delegate_->GetExternalViewEmbedder();
|
||||
}
|
||||
|
||||
// |Surface|
|
||||
std::unique_ptr<GLContextResult> GPUSurfaceMetal::MakeRenderContextCurrent() {
|
||||
// This backend has no such concept.
|
||||
|
||||
@ -87,9 +87,4 @@ GrDirectContext* GPUSurfaceSoftware::GetContext() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// |Surface|
|
||||
flutter::ExternalViewEmbedder* GPUSurfaceSoftware::GetExternalViewEmbedder() {
|
||||
return delegate_->GetExternalViewEmbedder();
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -31,9 +31,6 @@ class GPUSurfaceSoftware : public Surface {
|
||||
// |Surface|
|
||||
GrDirectContext* GetContext() override;
|
||||
|
||||
// |Surface|
|
||||
flutter::ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
private:
|
||||
GPUSurfaceSoftwareDelegate* delegate_;
|
||||
// TODO(38466): Refactor GPU surface APIs take into account the fact that an
|
||||
|
||||
@ -8,8 +8,4 @@ namespace flutter {
|
||||
|
||||
GPUSurfaceSoftwareDelegate::~GPUSurfaceSoftwareDelegate() = default;
|
||||
|
||||
ExternalViewEmbedder* GPUSurfaceSoftwareDelegate::GetExternalViewEmbedder() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
|
||||
#include "flutter/flow/embedded_views.h"
|
||||
#include "flutter/fml/macros.h"
|
||||
#include "flutter/shell/gpu/gpu_surface_delegate.h"
|
||||
#include "third_party/skia/include/core/SkSurface.h"
|
||||
|
||||
namespace flutter {
|
||||
@ -25,12 +24,9 @@ namespace flutter {
|
||||
/// @see |IOSurfaceSoftware|, |AndroidSurfaceSoftware|,
|
||||
/// |EmbedderSurfaceSoftware|.
|
||||
///
|
||||
class GPUSurfaceSoftwareDelegate : public GPUSurfaceDelegate {
|
||||
class GPUSurfaceSoftwareDelegate {
|
||||
public:
|
||||
~GPUSurfaceSoftwareDelegate() override;
|
||||
|
||||
// |GPUSurfaceDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
~GPUSurfaceSoftwareDelegate();
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
/// @brief Called when the GPU surface needs a new buffer to render a new
|
||||
|
||||
@ -13,7 +13,6 @@ GPUSurfaceVulkan::GPUSurfaceVulkan(
|
||||
std::unique_ptr<vulkan::VulkanNativeSurface> native_surface,
|
||||
bool render_to_surface)
|
||||
: window_(delegate->vk(), std::move(native_surface), render_to_surface),
|
||||
delegate_(delegate),
|
||||
render_to_surface_(render_to_surface),
|
||||
weak_factory_(this) {}
|
||||
|
||||
@ -67,8 +66,4 @@ GrDirectContext* GPUSurfaceVulkan::GetContext() {
|
||||
return window_.GetSkiaGrContext();
|
||||
}
|
||||
|
||||
flutter::ExternalViewEmbedder* GPUSurfaceVulkan::GetExternalViewEmbedder() {
|
||||
return delegate_->GetExternalViewEmbedder();
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -36,12 +36,8 @@ class GPUSurfaceVulkan : public Surface {
|
||||
// |Surface|
|
||||
GrDirectContext* GetContext() override;
|
||||
|
||||
// |Surface|
|
||||
flutter::ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
private:
|
||||
vulkan::VulkanWindow window_;
|
||||
GPUSurfaceVulkanDelegate* delegate_;
|
||||
const bool render_to_surface_;
|
||||
|
||||
fml::WeakPtrFactory<GPUSurfaceVulkan> weak_factory_;
|
||||
|
||||
@ -8,8 +8,4 @@ namespace flutter {
|
||||
|
||||
GPUSurfaceVulkanDelegate::~GPUSurfaceVulkanDelegate() = default;
|
||||
|
||||
ExternalViewEmbedder* GPUSurfaceVulkanDelegate::GetExternalViewEmbedder() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -6,17 +6,13 @@
|
||||
#define FLUTTER_SHELL_GPU_GPU_SURFACE_VULKAN_DELEGATE_H_
|
||||
|
||||
#include "flutter/fml/memory/ref_ptr.h"
|
||||
#include "flutter/shell/gpu/gpu_surface_delegate.h"
|
||||
#include "flutter/vulkan/vulkan_proc_table.h"
|
||||
|
||||
namespace flutter {
|
||||
|
||||
class GPUSurfaceVulkanDelegate : public GPUSurfaceDelegate {
|
||||
class GPUSurfaceVulkanDelegate {
|
||||
public:
|
||||
~GPUSurfaceVulkanDelegate() override;
|
||||
|
||||
// |GPUSurfaceDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
~GPUSurfaceVulkanDelegate();
|
||||
|
||||
// Obtain a reference to the Vulkan implementation's proc table.
|
||||
virtual fml::RefPtr<vulkan::VulkanProcTable> vk() = 0;
|
||||
|
||||
@ -132,11 +132,6 @@ intptr_t AndroidSurfaceGL::GLContextFBO(GLFrameInfo frame_info) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
ExternalViewEmbedder* AndroidSurfaceGL::GetExternalViewEmbedder() {
|
||||
return external_view_embedder_.get();
|
||||
}
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
sk_sp<const GrGLInterface> AndroidSurfaceGL::GetGLInterface() const {
|
||||
// This is a workaround for a bug in the Android emulator EGL/GLES
|
||||
|
||||
@ -63,9 +63,6 @@ class AndroidSurfaceGL final : public GPUSurfaceGLDelegate,
|
||||
// |GPUSurfaceGLDelegate|
|
||||
intptr_t GLContextFBO(GLFrameInfo frame_info) const override;
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
sk_sp<const GrGLInterface> GetGLInterface() const override;
|
||||
|
||||
|
||||
@ -141,11 +141,6 @@ bool AndroidSurfaceSoftware::PresentBackingStore(
|
||||
return true;
|
||||
}
|
||||
|
||||
// |GPUSurfaceSoftwareDelegate|
|
||||
ExternalViewEmbedder* AndroidSurfaceSoftware::GetExternalViewEmbedder() {
|
||||
return external_view_embedder_.get();
|
||||
}
|
||||
|
||||
void AndroidSurfaceSoftware::TeardownOnScreenContext() {}
|
||||
|
||||
bool AndroidSurfaceSoftware::OnScreenSurfaceResize(const SkISize& size) {
|
||||
|
||||
@ -53,9 +53,6 @@ class AndroidSurfaceSoftware final : public AndroidSurface,
|
||||
// |GPUSurfaceSoftwareDelegate|
|
||||
bool PresentBackingStore(sk_sp<SkSurface> backing_store) override;
|
||||
|
||||
// |GPUSurfaceSoftwareDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
private:
|
||||
const std::shared_ptr<AndroidExternalViewEmbedder> external_view_embedder_;
|
||||
|
||||
|
||||
@ -77,10 +77,6 @@ bool AndroidSurfaceVulkan::SetNativeWindow(
|
||||
return native_window_ && native_window_->IsValid();
|
||||
}
|
||||
|
||||
ExternalViewEmbedder* AndroidSurfaceVulkan::GetExternalViewEmbedder() {
|
||||
return external_view_embedder_.get();
|
||||
}
|
||||
|
||||
fml::RefPtr<vulkan::VulkanProcTable> AndroidSurfaceVulkan::vk() {
|
||||
return proc_table_;
|
||||
}
|
||||
|
||||
@ -50,9 +50,6 @@ class AndroidSurfaceVulkan : public AndroidSurface,
|
||||
// |AndroidSurface|
|
||||
bool SetNativeWindow(fml::RefPtr<AndroidNativeWindow> window) override;
|
||||
|
||||
// |GPUSurfaceVulkanDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
// |GPUSurfaceVulkanDelegate|
|
||||
fml::RefPtr<vulkan::VulkanProcTable> vk() override;
|
||||
|
||||
|
||||
@ -52,11 +52,6 @@ class SurfaceMock : public Surface {
|
||||
|
||||
MOCK_METHOD(GrDirectContext*, GetContext, (), (override));
|
||||
|
||||
MOCK_METHOD(flutter::ExternalViewEmbedder*,
|
||||
GetExternalViewEmbedder,
|
||||
(),
|
||||
(override));
|
||||
|
||||
MOCK_METHOD(std::unique_ptr<GLContextResult>,
|
||||
MakeRenderContextCurrent,
|
||||
(),
|
||||
|
||||
@ -22,8 +22,4 @@ intptr_t AndroidSurfaceMock::GLContextFBO(GLFrameInfo frame_info) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
ExternalViewEmbedder* AndroidSurfaceMock::GetExternalViewEmbedder() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -49,9 +49,6 @@ class AndroidSurfaceMock final : public GPUSurfaceGLDelegate,
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
intptr_t GLContextFBO(GLFrameInfo frame_info) const override;
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
};
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -48,9 +48,6 @@ class IOSSurfaceGL final : public IOSSurface, public GPUSurfaceGLDelegate {
|
||||
// |GPUSurfaceGLDelegate|
|
||||
bool SurfaceSupportsReadback() const override;
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
private:
|
||||
std::unique_ptr<IOSRenderTargetGL> render_target_;
|
||||
|
||||
|
||||
@ -82,9 +82,4 @@ bool IOSSurfaceGL::GLContextPresent(uint32_t fbo_id) {
|
||||
return IsValid() && render_target_->PresentRenderBuffer();
|
||||
}
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
ExternalViewEmbedder* IOSSurfaceGL::GetExternalViewEmbedder() {
|
||||
return GetSurfaceExternalViewEmbedder().get();
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -6,7 +6,6 @@
|
||||
#define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_IOS_SURFACE_METAL_H_
|
||||
|
||||
#include "flutter/fml/macros.h"
|
||||
#include "flutter/shell/gpu/gpu_surface_delegate.h"
|
||||
#import "flutter/shell/platform/darwin/ios/ios_surface.h"
|
||||
#include "third_party/skia/include/gpu/mtl/GrMtlTypes.h"
|
||||
|
||||
@ -14,15 +13,14 @@
|
||||
|
||||
namespace flutter {
|
||||
|
||||
class SK_API_AVAILABLE_CA_METAL_LAYER IOSSurfaceMetal final : public IOSSurface,
|
||||
public GPUSurfaceDelegate {
|
||||
class SK_API_AVAILABLE_CA_METAL_LAYER IOSSurfaceMetal final : public IOSSurface {
|
||||
public:
|
||||
IOSSurfaceMetal(fml::scoped_nsobject<CAMetalLayer> layer,
|
||||
std::shared_ptr<IOSContext> context,
|
||||
const std::shared_ptr<IOSExternalViewEmbedder>& external_view_embedder);
|
||||
|
||||
// |IOSSurface|
|
||||
~IOSSurfaceMetal() override;
|
||||
~IOSSurfaceMetal();
|
||||
|
||||
private:
|
||||
fml::scoped_nsobject<CAMetalLayer> layer_;
|
||||
@ -37,9 +35,6 @@ class SK_API_AVAILABLE_CA_METAL_LAYER IOSSurfaceMetal final : public IOSSurface,
|
||||
// |IOSSurface|
|
||||
std::unique_ptr<Surface> CreateGPUSurface(GrDirectContext* gr_context) override;
|
||||
|
||||
// |GPUSurfaceDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
FML_DISALLOW_COPY_AND_ASSIGN(IOSSurfaceMetal);
|
||||
};
|
||||
|
||||
|
||||
@ -47,16 +47,10 @@ void IOSSurfaceMetal::UpdateStorageSizeIfNecessary() {
|
||||
std::unique_ptr<Surface> IOSSurfaceMetal::CreateGPUSurface(GrDirectContext* /* unused */) {
|
||||
auto metal_context = CastToMetalContext(GetContext());
|
||||
|
||||
return std::make_unique<GPUSurfaceMetal>(this, // Metal surface delegate
|
||||
layer_, // layer
|
||||
return std::make_unique<GPUSurfaceMetal>(layer_, // layer
|
||||
metal_context->GetMainContext(), // context
|
||||
metal_context->GetMainCommandQueue() // command queue
|
||||
);
|
||||
}
|
||||
|
||||
// |GPUSurfaceDelegate|
|
||||
ExternalViewEmbedder* IOSSurfaceMetal::GetExternalViewEmbedder() {
|
||||
return GetSurfaceExternalViewEmbedder().get();
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -39,9 +39,6 @@ class IOSSurfaceSoftware final : public IOSSurface, public GPUSurfaceSoftwareDel
|
||||
// |GPUSurfaceSoftwareDelegate|
|
||||
bool PresentBackingStore(sk_sp<SkSurface> backing_store) override;
|
||||
|
||||
// |GPUSurfaceSoftwareDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
private:
|
||||
fml::scoped_nsobject<CALayer> layer_;
|
||||
sk_sp<SkSurface> sk_surface_;
|
||||
|
||||
@ -123,9 +123,4 @@ bool IOSSurfaceSoftware::PresentBackingStore(sk_sp<SkSurface> backing_store) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// |GPUSurfaceSoftwareDelegate|
|
||||
ExternalViewEmbedder* IOSSurfaceSoftware::GetExternalViewEmbedder() {
|
||||
return GetSurfaceExternalViewEmbedder().get();
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -70,11 +70,6 @@ SkMatrix EmbedderSurfaceGL::GLContextSurfaceTransformation() const {
|
||||
return callback();
|
||||
}
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
ExternalViewEmbedder* EmbedderSurfaceGL::GetExternalViewEmbedder() {
|
||||
return external_view_embedder_.get();
|
||||
}
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
EmbedderSurfaceGL::GLProcResolver EmbedderSurfaceGL::GetGLProcResolver() const {
|
||||
return gl_dispatch_table_.gl_proc_resolver;
|
||||
|
||||
@ -67,9 +67,6 @@ class EmbedderSurfaceGL final : public EmbedderSurface,
|
||||
// |GPUSurfaceGLDelegate|
|
||||
SkMatrix GLContextSurfaceTransformation() const override;
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
// |GPUSurfaceGLDelegate|
|
||||
GLProcResolver GetGLProcResolver() const override;
|
||||
|
||||
|
||||
@ -106,9 +106,4 @@ bool EmbedderSurfaceSoftware::PresentBackingStore(
|
||||
);
|
||||
}
|
||||
|
||||
// |GPUSurfaceSoftwareDelegate|
|
||||
ExternalViewEmbedder* EmbedderSurfaceSoftware::GetExternalViewEmbedder() {
|
||||
return external_view_embedder_.get();
|
||||
}
|
||||
|
||||
} // namespace flutter
|
||||
|
||||
@ -47,9 +47,6 @@ class EmbedderSurfaceSoftware final : public EmbedderSurface,
|
||||
// |GPUSurfaceSoftwareDelegate|
|
||||
bool PresentBackingStore(sk_sp<SkSurface> backing_store) override;
|
||||
|
||||
// |GPUSurfaceSoftwareDelegate|
|
||||
ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
FML_DISALLOW_COPY_AND_ASSIGN(EmbedderSurfaceSoftware);
|
||||
};
|
||||
|
||||
|
||||
@ -80,6 +80,10 @@ class PlatformView final : public flutter::PlatformView,
|
||||
// |PlatformView|
|
||||
flutter::PointerDataDispatcherMaker GetDispatcherMaker() override;
|
||||
|
||||
// |flutter::PlatformView|
|
||||
std::shared_ptr<flutter::ExternalViewEmbedder> CreateExternalViewEmbedder()
|
||||
override;
|
||||
|
||||
private:
|
||||
void RegisterPlatformMessageHandlers();
|
||||
|
||||
@ -121,10 +125,6 @@ class PlatformView final : public flutter::PlatformView,
|
||||
// |flutter::PlatformView|
|
||||
std::unique_ptr<flutter::Surface> CreateRenderingSurface() override;
|
||||
|
||||
// |flutter::PlatformView|
|
||||
std::shared_ptr<flutter::ExternalViewEmbedder> CreateExternalViewEmbedder()
|
||||
override;
|
||||
|
||||
// |flutter::PlatformView|
|
||||
void HandlePlatformMessage(
|
||||
fml::RefPtr<flutter::PlatformMessage> message) override;
|
||||
|
||||
@ -215,7 +215,8 @@ TEST_F(PlatformViewTests, CreateSurfaceTest) {
|
||||
RunLoopUntilIdle();
|
||||
|
||||
EXPECT_EQ(gr_context.get(), delegate.surface()->GetContext());
|
||||
EXPECT_EQ(view_embedder.get(), delegate.surface()->GetExternalViewEmbedder());
|
||||
EXPECT_EQ(view_embedder.get(),
|
||||
platform_view.CreateExternalViewEmbedder().get());
|
||||
}
|
||||
|
||||
// This test makes sure that the PlatformView correctly registers Scenic
|
||||
|
||||
@ -51,9 +51,4 @@ SkMatrix Surface::GetRootTransformation() const {
|
||||
return matrix;
|
||||
}
|
||||
|
||||
// |flutter::GetViewEmbedder|
|
||||
flutter::ExternalViewEmbedder* Surface::GetExternalViewEmbedder() {
|
||||
return view_embedder_.get();
|
||||
}
|
||||
|
||||
} // namespace flutter_runner
|
||||
|
||||
@ -39,9 +39,6 @@ class Surface final : public flutter::Surface {
|
||||
// |flutter::Surface|
|
||||
SkMatrix GetRootTransformation() const override;
|
||||
|
||||
// |flutter::Surface|
|
||||
flutter::ExternalViewEmbedder* GetExternalViewEmbedder() override;
|
||||
|
||||
FML_DISALLOW_COPY_AND_ASSIGN(Surface);
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user