embedder: Exclude GL code (flutter/engine#21544)

This commit is contained in:
David Worsham 2020-10-01 12:20:10 -07:00 committed by GitHub
parent 210b68046c
commit 71497dd042
5 changed files with 72 additions and 32 deletions

View File

@ -59,6 +59,10 @@ extern const intptr_t kPlatformStrongDillSize;
#include "rapidjson/rapidjson.h"
#include "rapidjson/writer.h"
#ifdef SHELL_ENABLE_GL
#include "flutter/shell/platform/embedder/embedder_external_texture_gl.h"
#endif
const int32_t kFlutterSemanticsNodeIdBatchEnd = -1;
const int32_t kFlutterSemanticsCustomActionIdBatchEnd = -1;
@ -1034,11 +1038,11 @@ FlutterEngineResult FlutterEngineInitialize(size_t version,
return std::make_unique<flutter::Rasterizer>(shell);
};
#ifdef SHELL_ENABLE_GL
// TODO(chinmaygarde): This is the wrong spot for this. It belongs in the
// platform view jump table.
flutter::EmbedderExternalTextureGL::ExternalTextureCallback
external_texture_callback;
#ifdef SHELL_ENABLE_GL
if (config->type == kOpenGL) {
const FlutterOpenGLRendererConfig* open_gl_config = &config->open_gl;
if (SAFE_ACCESS(open_gl_config, gl_external_texture_frame_callback,
@ -1135,8 +1139,11 @@ FlutterEngineResult FlutterEngineInitialize(size_t version,
std::move(settings), //
std::move(run_configuration), //
on_create_platform_view, //
on_create_rasterizer, //
external_texture_callback //
on_create_rasterizer //
#ifdef SHELL_ENABLE_GL
,
external_texture_callback //
#endif
);
// Release the ownership of the embedder engine to the caller.

View File

@ -27,16 +27,24 @@ EmbedderEngine::EmbedderEngine(
flutter::Settings settings,
RunConfiguration run_configuration,
Shell::CreateCallback<PlatformView> on_create_platform_view,
Shell::CreateCallback<Rasterizer> on_create_rasterizer,
EmbedderExternalTextureGL::ExternalTextureCallback
external_texture_callback)
Shell::CreateCallback<Rasterizer> on_create_rasterizer
#ifdef SHELL_ENABLE_GL
,
EmbedderExternalTextureGL::ExternalTextureCallback external_texture_callback
#endif
)
: thread_host_(std::move(thread_host)),
task_runners_(task_runners),
run_configuration_(std::move(run_configuration)),
shell_args_(std::make_unique<ShellArgs>(std::move(settings),
on_create_platform_view,
on_create_rasterizer)),
external_texture_callback_(external_texture_callback) {}
on_create_rasterizer))
#ifdef SHELL_ENABLE_GL
,
external_texture_callback_(external_texture_callback)
#endif
{
}
EmbedderEngine::~EmbedderEngine() = default;
@ -144,28 +152,37 @@ bool EmbedderEngine::SendPlatformMessage(
}
bool EmbedderEngine::RegisterTexture(int64_t texture) {
#ifdef SHELL_ENABLE_GL
if (!IsValid() || !external_texture_callback_) {
return false;
}
shell_->GetPlatformView()->RegisterTexture(
std::make_unique<EmbedderExternalTextureGL>(texture,
external_texture_callback_));
#endif
return true;
}
bool EmbedderEngine::UnregisterTexture(int64_t texture) {
#ifdef SHELL_ENABLE_GL
if (!IsValid() || !external_texture_callback_) {
return false;
}
shell_->GetPlatformView()->UnregisterTexture(texture);
#endif
return true;
}
bool EmbedderEngine::MarkTextureFrameAvailable(int64_t texture) {
#ifdef SHELL_ENABLE_GL
if (!IsValid() || !external_texture_callback_) {
return false;
}
shell_->GetPlatformView()->MarkTextureFrameAvailable(texture);
#endif
return true;
}

View File

@ -12,9 +12,12 @@
#include "flutter/shell/common/shell.h"
#include "flutter/shell/common/thread_host.h"
#include "flutter/shell/platform/embedder/embedder.h"
#include "flutter/shell/platform/embedder/embedder_external_texture_gl.h"
#include "flutter/shell/platform/embedder/embedder_thread_host.h"
#ifdef SHELL_ENABLE_GL
#include "flutter/shell/platform/embedder/embedder_external_texture_gl.h"
#endif
namespace flutter {
struct ShellArgs;
@ -28,9 +31,13 @@ class EmbedderEngine {
Settings settings,
RunConfiguration run_configuration,
Shell::CreateCallback<PlatformView> on_create_platform_view,
Shell::CreateCallback<Rasterizer> on_create_rasterizer,
Shell::CreateCallback<Rasterizer> on_create_rasterizer
#ifdef SHELL_ENABLE_GL
,
EmbedderExternalTextureGL::ExternalTextureCallback
external_texture_callback);
external_texture_callback
#endif
);
~EmbedderEngine();
@ -90,8 +97,10 @@ class EmbedderEngine {
RunConfiguration run_configuration_;
std::unique_ptr<ShellArgs> shell_args_;
std::unique_ptr<Shell> shell_;
#ifdef SHELL_ENABLE_GL
const EmbedderExternalTextureGL::ExternalTextureCallback
external_texture_callback_;
#endif
FML_DISALLOW_COPY_AND_ASSIGN(EmbedderEngine);
};

View File

@ -6,6 +6,19 @@
namespace flutter {
PlatformViewEmbedder::PlatformViewEmbedder(
PlatformView::Delegate& delegate,
flutter::TaskRunners task_runners,
EmbedderSurfaceSoftware::SoftwareDispatchTable software_dispatch_table,
PlatformDispatchTable platform_dispatch_table,
std::unique_ptr<EmbedderExternalViewEmbedder> external_view_embedder)
: PlatformView(delegate, std::move(task_runners)),
embedder_surface_(std::make_unique<EmbedderSurfaceSoftware>(
software_dispatch_table,
std::move(external_view_embedder))),
platform_dispatch_table_(platform_dispatch_table) {}
#ifdef SHELL_ENABLE_GL
PlatformViewEmbedder::PlatformViewEmbedder(
PlatformView::Delegate& delegate,
flutter::TaskRunners task_runners,
@ -19,18 +32,7 @@ PlatformViewEmbedder::PlatformViewEmbedder(
fbo_reset_after_present,
std::move(external_view_embedder))),
platform_dispatch_table_(platform_dispatch_table) {}
PlatformViewEmbedder::PlatformViewEmbedder(
PlatformView::Delegate& delegate,
flutter::TaskRunners task_runners,
EmbedderSurfaceSoftware::SoftwareDispatchTable software_dispatch_table,
PlatformDispatchTable platform_dispatch_table,
std::unique_ptr<EmbedderExternalViewEmbedder> external_view_embedder)
: PlatformView(delegate, std::move(task_runners)),
embedder_surface_(std::make_unique<EmbedderSurfaceSoftware>(
software_dispatch_table,
std::move(external_view_embedder))),
platform_dispatch_table_(platform_dispatch_table) {}
#endif
PlatformViewEmbedder::~PlatformViewEmbedder() = default;

View File

@ -11,10 +11,13 @@
#include "flutter/shell/common/platform_view.h"
#include "flutter/shell/platform/embedder/embedder.h"
#include "flutter/shell/platform/embedder/embedder_surface.h"
#include "flutter/shell/platform/embedder/embedder_surface_gl.h"
#include "flutter/shell/platform/embedder/embedder_surface_software.h"
#include "flutter/shell/platform/embedder/vsync_waiter_embedder.h"
#ifdef SHELL_ENABLE_GL
#include "flutter/shell/platform/embedder/embedder_surface_gl.h"
#endif
namespace flutter {
class PlatformViewEmbedder final : public PlatformView {
@ -40,6 +43,15 @@ class PlatformViewEmbedder final : public PlatformView {
compute_platform_resolved_locale_callback;
};
// Create a platform view that sets up a software rasterizer.
PlatformViewEmbedder(
PlatformView::Delegate& delegate,
flutter::TaskRunners task_runners,
EmbedderSurfaceSoftware::SoftwareDispatchTable software_dispatch_table,
PlatformDispatchTable platform_dispatch_table,
std::unique_ptr<EmbedderExternalViewEmbedder> external_view_embedder);
#ifdef SHELL_ENABLE_GL
// Creates a platform view that sets up an OpenGL rasterizer.
PlatformViewEmbedder(
PlatformView::Delegate& delegate,
@ -48,14 +60,7 @@ class PlatformViewEmbedder final : public PlatformView {
bool fbo_reset_after_present,
PlatformDispatchTable platform_dispatch_table,
std::unique_ptr<EmbedderExternalViewEmbedder> external_view_embedder);
// Create a platform view that sets up a software rasterizer.
PlatformViewEmbedder(
PlatformView::Delegate& delegate,
flutter::TaskRunners task_runners,
EmbedderSurfaceSoftware::SoftwareDispatchTable software_dispatch_table,
PlatformDispatchTable platform_dispatch_table,
std::unique_ptr<EmbedderExternalViewEmbedder> external_view_embedder);
#endif
~PlatformViewEmbedder() override;