提交 142cf001 编写于 作者: G gaaclarke 提交者: Chinmay Garde

Revert "Manage resource and onscreen contexts using separate IOSGLContext...

Revert "Manage resource and onscreen contexts using separate IOSGLContext objects (#12277)" (#12773)

This reverts commit 5a8da655.
上级 5418f43a
......@@ -24,9 +24,8 @@
- (instancetype)init NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithContentsScale:(CGFloat)contentsScale;
- (std::unique_ptr<flutter::IOSSurface>)
createSurfaceWithOnscreenGLContext:(fml::WeakPtr<flutter::IOSGLContext>)onscreenGLContext
resourceGLContext:(fml::WeakPtr<flutter::IOSGLContext>)resourceGLContext;
- (std::unique_ptr<flutter::IOSSurface>)createSurface:
(std::shared_ptr<flutter::IOSGLContext>)gl_context;
@end
......
......@@ -78,17 +78,15 @@
#endif // TARGET_IPHONE_SIMULATOR
}
- (std::unique_ptr<flutter::IOSSurface>)
createSurfaceWithOnscreenGLContext:(fml::WeakPtr<flutter::IOSGLContext>)onscreenGLContext
resourceGLContext:(fml::WeakPtr<flutter::IOSGLContext>)resourceGLContext {
- (std::unique_ptr<flutter::IOSSurface>)createSurface:
(std::shared_ptr<flutter::IOSGLContext>)gl_context {
if ([self.layer isKindOfClass:[CAEAGLLayer class]]) {
fml::scoped_nsobject<CAEAGLLayer> eagl_layer(
reinterpret_cast<CAEAGLLayer*>([self.layer retain]));
if (@available(iOS 9.0, *)) {
eagl_layer.get().presentsWithTransaction = YES;
}
return std::make_unique<flutter::IOSSurfaceGL>(std::move(eagl_layer), onscreenGLContext,
resourceGLContext);
return std::make_unique<flutter::IOSSurfaceGL>(std::move(eagl_layer), gl_context);
#if FLUTTER_SHELL_ENABLE_METAL
} else if ([self.layer isKindOfClass:[CAMetalLayer class]]) {
fml::scoped_nsobject<CAMetalLayer> metalLayer(
......
......@@ -363,13 +363,12 @@ void FlutterPlatformViewsController::Reset() {
}
bool FlutterPlatformViewsController::SubmitFrame(GrContext* gr_context,
fml::WeakPtr<IOSGLContext> onscreen_gl_context,
fml::WeakPtr<IOSGLContext> resource_gl_context) {
std::shared_ptr<IOSGLContext> gl_context) {
DisposeViews();
bool did_submit = true;
for (int64_t view_id : composition_order_) {
EnsureOverlayInitialized(view_id, onscreen_gl_context, resource_gl_context, gr_context);
EnsureOverlayInitialized(view_id, std::move(gl_context), gr_context);
auto frame = overlays_[view_id]->surface->AcquireFrame(frame_size_);
SkCanvas* canvas = frame->SkiaCanvas();
canvas->drawPicture(picture_recorders_[view_id]->finishRecordingAsPicture());
......@@ -453,8 +452,7 @@ void FlutterPlatformViewsController::DisposeViews() {
void FlutterPlatformViewsController::EnsureOverlayInitialized(
int64_t overlay_id,
fml::WeakPtr<IOSGLContext> onscreen_gl_context,
fml::WeakPtr<IOSGLContext> resource_gl_context,
std::shared_ptr<IOSGLContext> gl_context,
GrContext* gr_context) {
FML_DCHECK(flutter_view_);
......@@ -470,9 +468,7 @@ void FlutterPlatformViewsController::EnsureOverlayInitialized(
overlay_view.get().frame = flutter_view_.get().bounds;
overlay_view.get().autoresizingMask =
(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
std::unique_ptr<IOSSurface> ios_surface = [overlay_view.get()
createSurfaceWithOnscreenGLContext:fml::WeakPtr<flutter::IOSGLContext>()
resourceGLContext:fml::WeakPtr<flutter::IOSGLContext>()];
std::unique_ptr<IOSSurface> ios_surface = [overlay_view.get() createSurface:nil];
std::unique_ptr<Surface> surface = ios_surface->CreateGPUSurface();
overlays_[overlay_id] = std::make_unique<FlutterPlatformViewLayer>(
std::move(overlay_view), std::move(ios_surface), std::move(surface));
......@@ -497,8 +493,7 @@ void FlutterPlatformViewsController::EnsureOverlayInitialized(
overlay_view.get().autoresizingMask =
(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
std::unique_ptr<IOSSurface> ios_surface =
[overlay_view.get() createSurfaceWithOnscreenGLContext:std::move(onscreen_gl_context)
resourceGLContext:std::move(resource_gl_context)];
[overlay_view.get() createSurface:std::move(gl_context)];
std::unique_ptr<Surface> surface = ios_surface->CreateGPUSurface(gr_context);
overlays_[overlay_id] = std::make_unique<FlutterPlatformViewLayer>(
std::move(overlay_view), std::move(ios_surface), std::move(surface));
......
......@@ -100,9 +100,7 @@ class FlutterPlatformViewsController {
// Discards all platform views instances and auxiliary resources.
void Reset();
bool SubmitFrame(GrContext* gr_context,
fml::WeakPtr<IOSGLContext> onscreen_gl_context,
fml::WeakPtr<IOSGLContext> resource_gl_context);
bool SubmitFrame(GrContext* gr_context, std::shared_ptr<IOSGLContext> gl_context);
void OnMethodCall(FlutterMethodCall* call, FlutterResult& result);
......@@ -164,8 +162,7 @@ class FlutterPlatformViewsController {
// Dispose the views in `views_to_dispose_`.
void DisposeViews();
void EnsureOverlayInitialized(int64_t overlay_id,
fml::WeakPtr<IOSGLContext> onscreen_gl_context,
fml::WeakPtr<IOSGLContext> resource_gl_context,
std::shared_ptr<IOSGLContext> gl_context,
GrContext* gr_context);
// This will return true after pre-roll if any of the embedded views
......
......@@ -33,8 +33,8 @@
- (instancetype)initWithDelegate:(id<FlutterViewEngineDelegate>)delegate
opaque:(BOOL)opaque NS_DESIGNATED_INITIALIZER;
- (std::unique_ptr<flutter::IOSSurface>)createSurfaceWithResourceGLContext:
(fml::WeakPtr<flutter::IOSGLContext>)resourceGLContext;
- (std::unique_ptr<flutter::IOSSurface>)createSurface:
(std::shared_ptr<flutter::IOSGLContext>)context;
@end
......
......@@ -13,7 +13,6 @@
#include "flutter/shell/common/platform_view.h"
#include "flutter/shell/common/rasterizer.h"
#include "flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h"
#include "flutter/shell/platform/darwin/ios/ios_gl_context.h"
#include "flutter/shell/platform/darwin/ios/ios_surface_gl.h"
#include "flutter/shell/platform/darwin/ios/ios_surface_software.h"
#include "third_party/skia/include/utils/mac/SkCGUtils.h"
......@@ -22,10 +21,9 @@
#include "flutter/shell/platform/darwin/ios/ios_surface_metal.h"
#endif // FLUTTER_SHELL_ENABLE_METAL
@implementation FlutterView {
id<FlutterViewEngineDelegate> _delegate;
std::unique_ptr<flutter::IOSGLContext> _onscreenGLContext;
}
@implementation FlutterView
id<FlutterViewEngineDelegate> _delegate;
- (instancetype)init {
@throw([NSException exceptionWithName:@"FlutterView must initWithDelegate"
......@@ -95,14 +93,8 @@
#endif // TARGET_IPHONE_SIMULATOR
}
- (std::unique_ptr<flutter::IOSSurface>)createSurfaceWithResourceGLContext:
(fml::WeakPtr<flutter::IOSGLContext>)resourceGLContext {
#if !TARGET_IPHONE_SIMULATOR
if (!_onscreenGLContext) {
_onscreenGLContext = resourceGLContext->MakeSharedContext();
}
#endif // !TARGET_IPHONE_SIMULATOR
- (std::unique_ptr<flutter::IOSSurface>)createSurface:
(std::shared_ptr<flutter::IOSGLContext>)context {
if ([self.layer isKindOfClass:[CAEAGLLayer class]]) {
fml::scoped_nsobject<CAEAGLLayer> eagl_layer(
reinterpret_cast<CAEAGLLayer*>([self.layer retain]));
......@@ -113,9 +105,8 @@
eagl_layer.get().presentsWithTransaction = YES;
}
}
return std::make_unique<flutter::IOSSurfaceGL>(
_onscreenGLContext->GetWeakPtr(), std::move(resourceGLContext), std::move(eagl_layer),
[_delegate platformViewsController]);
return std::make_unique<flutter::IOSSurfaceGL>(context, std::move(eagl_layer),
[_delegate platformViewsController]);
#if FLUTTER_SHELL_ENABLE_METAL
} else if ([self.layer isKindOfClass:[CAMetalLayer class]]) {
fml::scoped_nsobject<CAMetalLayer> metalLayer(
......
......@@ -13,32 +13,30 @@
#include "flutter/fml/macros.h"
#include "flutter/fml/platform/darwin/scoped_nsobject.h"
#include "flutter/shell/common/platform_view.h"
#include "ios_gl_render_target.h"
namespace flutter {
class IOSGLContext {
public:
IOSGLContext();
IOSGLContext(EAGLSharegroup* sharegroup);
~IOSGLContext();
std::unique_ptr<IOSGLRenderTarget> CreateRenderTarget(
fml::scoped_nsobject<CAEAGLLayer> layer);
bool MakeCurrent();
bool BindRenderbufferStorage(fml::scoped_nsobject<CAEAGLLayer> layer);
bool ResourceMakeCurrent();
sk_sp<SkColorSpace> ColorSpace() const { return color_space_; }
std::unique_ptr<IOSGLContext> MakeSharedContext();
fml::WeakPtr<IOSGLContext> GetWeakPtr();
private:
fml::scoped_nsobject<EAGLContext> context_;
fml::scoped_nsobject<EAGLContext> resource_context_;
sk_sp<SkColorSpace> color_space_;
std::unique_ptr<fml::WeakPtrFactory<IOSGLContext>> weak_factory_;
FML_DISALLOW_COPY_AND_ASSIGN(IOSGLContext);
};
......
......@@ -12,16 +12,15 @@
namespace flutter {
IOSGLContext::IOSGLContext() : IOSGLContext(nullptr) {}
IOSGLContext::IOSGLContext(EAGLSharegroup* sharegroup)
: weak_factory_(std::make_unique<fml::WeakPtrFactory<IOSGLContext>>(this)) {
context_.reset([[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3
sharegroup:sharegroup]);
if (!context_) {
IOSGLContext::IOSGLContext() {
resource_context_.reset([[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]);
if (resource_context_ != nullptr) {
context_.reset([[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3
sharegroup:resource_context_.get().sharegroup]);
} else {
resource_context_.reset([[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]);
context_.reset([[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2
sharegroup:sharegroup]);
sharegroup:resource_context_.get().sharegroup]);
}
// TODO:
......@@ -45,22 +44,20 @@ IOSGLContext::IOSGLContext(EAGLSharegroup* sharegroup)
}
}
fml::WeakPtr<IOSGLContext> IOSGLContext::GetWeakPtr() {
return weak_factory_->GetWeakPtr();
}
IOSGLContext::~IOSGLContext() = default;
bool IOSGLContext::BindRenderbufferStorage(fml::scoped_nsobject<CAEAGLLayer> layer) {
return [context_.get() renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer.get()];
std::unique_ptr<IOSGLRenderTarget> IOSGLContext::CreateRenderTarget(
fml::scoped_nsobject<CAEAGLLayer> layer) {
return std::make_unique<IOSGLRenderTarget>(std::move(layer), context_.get(),
resource_context_.get());
}
IOSGLContext::~IOSGLContext() = default;
bool IOSGLContext::MakeCurrent() {
return [EAGLContext setCurrentContext:context_.get()];
}
std::unique_ptr<IOSGLContext> IOSGLContext::MakeSharedContext() {
return std::make_unique<IOSGLContext>(context_.get().sharegroup);
bool IOSGLContext::ResourceMakeCurrent() {
return [EAGLContext setCurrentContext:resource_context_.get()];
}
} // namespace flutter
......@@ -13,15 +13,14 @@
#include "flutter/fml/macros.h"
#include "flutter/fml/platform/darwin/scoped_nsobject.h"
#include "flutter/shell/common/platform_view.h"
#include "flutter/shell/platform/darwin/ios/ios_gl_context.h"
namespace flutter {
class IOSGLRenderTarget {
public:
IOSGLRenderTarget(fml::scoped_nsobject<CAEAGLLayer> layer,
fml::WeakPtr<IOSGLContext> onscreen_context,
fml::WeakPtr<IOSGLContext> resource_context);
EAGLContext* context,
EAGLContext* resource_context);
~IOSGLRenderTarget();
......@@ -41,8 +40,8 @@ class IOSGLRenderTarget {
private:
fml::scoped_nsobject<CAEAGLLayer> layer_;
fml::WeakPtr<IOSGLContext> onscreen_gl_context_;
fml::WeakPtr<IOSGLContext> resource_gl_context_;
fml::scoped_nsobject<EAGLContext> context_;
fml::scoped_nsobject<EAGLContext> resource_context_;
GLuint framebuffer_;
GLuint colorbuffer_;
GLint storage_size_width_;
......
......@@ -11,22 +11,23 @@
#include "third_party/skia/include/gpu/gl/GrGLInterface.h"
namespace flutter {
IOSGLRenderTarget::IOSGLRenderTarget(fml::scoped_nsobject<CAEAGLLayer> layer,
fml::WeakPtr<IOSGLContext> onscreen_gl_context,
fml::WeakPtr<IOSGLContext> resource_gl_context)
EAGLContext* context,
EAGLContext* resource_context)
: layer_(std::move(layer)),
onscreen_gl_context_(std::move(onscreen_gl_context)),
resource_gl_context_(std::move(resource_gl_context)),
context_([context retain]),
resource_context_([resource_context retain]),
framebuffer_(GL_NONE),
colorbuffer_(GL_NONE),
storage_size_width_(0),
storage_size_height_(0),
valid_(false) {
FML_DCHECK(layer_ != nullptr);
FML_DCHECK(onscreen_gl_context_);
FML_DCHECK(resource_gl_context_);
FML_DCHECK(context_ != nullptr);
FML_DCHECK(resource_context_ != nullptr);
bool context_current = onscreen_gl_context_->MakeCurrent();
bool context_current = [EAGLContext setCurrentContext:context_];
FML_DCHECK(context_current);
FML_DCHECK(glGetError() == GL_NO_ERROR);
......@@ -62,7 +63,7 @@ IOSGLRenderTarget::IOSGLRenderTarget(fml::scoped_nsobject<CAEAGLLayer> layer,
IOSGLRenderTarget::~IOSGLRenderTarget() {
EAGLContext* context = EAGLContext.currentContext;
onscreen_gl_context_->MakeCurrent();
[EAGLContext setCurrentContext:context_];
FML_DCHECK(glGetError() == GL_NO_ERROR);
// Deletes on GL_NONEs are ignored
......@@ -104,7 +105,7 @@ bool IOSGLRenderTarget::UpdateStorageSizeIfNecessary() {
FML_DCHECK(glGetError() == GL_NO_ERROR);
if (!onscreen_gl_context_->MakeCurrent()) {
if (![EAGLContext setCurrentContext:context_]) {
return false;
}
......@@ -115,7 +116,7 @@ bool IOSGLRenderTarget::UpdateStorageSizeIfNecessary() {
glBindRenderbuffer(GL_RENDERBUFFER, colorbuffer_);
FML_DCHECK(glGetError() == GL_NO_ERROR);
if (!onscreen_gl_context_->BindRenderbufferStorage(layer_)) {
if (![context_.get() renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer_.get()]) {
return false;
}
......@@ -132,11 +133,11 @@ bool IOSGLRenderTarget::UpdateStorageSizeIfNecessary() {
}
bool IOSGLRenderTarget::MakeCurrent() {
return UpdateStorageSizeIfNecessary() && onscreen_gl_context_->MakeCurrent();
return UpdateStorageSizeIfNecessary() && [EAGLContext setCurrentContext:context_.get()];
}
bool IOSGLRenderTarget::ResourceMakeCurrent() {
return resource_gl_context_->MakeCurrent();
return [EAGLContext setCurrentContext:resource_context_.get()];
}
} // namespace flutter
......@@ -20,14 +20,11 @@ class IOSSurfaceGL final : public IOSSurface,
public GPUSurfaceGLDelegate,
public ExternalViewEmbedder {
public:
IOSSurfaceGL(fml::WeakPtr<IOSGLContext> onscreen_gl_context,
fml::WeakPtr<IOSGLContext> resource_gl_context,
IOSSurfaceGL(std::shared_ptr<IOSGLContext> context,
fml::scoped_nsobject<CAEAGLLayer> layer,
FlutterPlatformViewsController* platform_views_controller);
IOSSurfaceGL(fml::scoped_nsobject<CAEAGLLayer> layer,
fml::WeakPtr<IOSGLContext> onscreen_gl_context,
fml::WeakPtr<IOSGLContext> resource_gl_context);
IOSSurfaceGL(fml::scoped_nsobject<CAEAGLLayer> layer, std::shared_ptr<IOSGLContext> context);
~IOSSurfaceGL() override;
......@@ -82,10 +79,7 @@ class IOSSurfaceGL final : public IOSSurface,
bool SubmitFrame(GrContext* context) override;
private:
fml::WeakPtr<IOSGLContext> onscreen_gl_context_;
fml::WeakPtr<IOSGLContext> resource_gl_context_;
std::shared_ptr<IOSGLContext> context_;
std::unique_ptr<IOSGLRenderTarget> render_target_;
FML_DISALLOW_COPY_AND_ASSIGN(IOSSurfaceGL);
......
......@@ -9,25 +9,17 @@
namespace flutter {
IOSSurfaceGL::IOSSurfaceGL(fml::WeakPtr<IOSGLContext> onscreen_gl_context,
fml::WeakPtr<IOSGLContext> resource_gl_context,
IOSSurfaceGL::IOSSurfaceGL(std::shared_ptr<IOSGLContext> context,
fml::scoped_nsobject<CAEAGLLayer> layer,
FlutterPlatformViewsController* platform_views_controller)
: IOSSurface(platform_views_controller),
onscreen_gl_context_(std::move(onscreen_gl_context)),
resource_gl_context_(std::move(resource_gl_context)) {
render_target_ = std::make_unique<IOSGLRenderTarget>(std::move(layer), onscreen_gl_context_,
resource_gl_context_);
: IOSSurface(platform_views_controller), context_(context) {
render_target_ = context_->CreateRenderTarget(std::move(layer));
}
IOSSurfaceGL::IOSSurfaceGL(fml::scoped_nsobject<CAEAGLLayer> layer,
fml::WeakPtr<IOSGLContext> onscreen_gl_context,
fml::WeakPtr<IOSGLContext> resource_gl_context)
: IOSSurface(nullptr),
onscreen_gl_context_(std::move(onscreen_gl_context)),
resource_gl_context_(std::move(resource_gl_context)) {
render_target_ = std::make_unique<IOSGLRenderTarget>(std::move(layer), onscreen_gl_context_,
resource_gl_context_);
std::shared_ptr<IOSGLContext> context)
: IOSSurface(nullptr), context_(context) {
render_target_ = context_->CreateRenderTarget(std::move(layer));
}
IOSSurfaceGL::~IOSSurfaceGL() = default;
......@@ -37,7 +29,7 @@ bool IOSSurfaceGL::IsValid() const {
}
bool IOSSurfaceGL::ResourceContextMakeCurrent() {
return resource_gl_context_->MakeCurrent();
return context_->ResourceMakeCurrent();
}
void IOSSurfaceGL::UpdateStorageSizeIfNecessary() {
......@@ -68,7 +60,7 @@ bool IOSSurfaceGL::GLContextMakeCurrent() {
if (!IsValid()) {
return false;
}
return render_target_->UpdateStorageSizeIfNecessary() && onscreen_gl_context_->MakeCurrent();
return render_target_->UpdateStorageSizeIfNecessary() && context_->MakeCurrent();
}
bool IOSSurfaceGL::GLContextClearCurrent() {
......@@ -153,8 +145,7 @@ bool IOSSurfaceGL::SubmitFrame(GrContext* context) {
return true;
}
bool submitted = platform_views_controller->SubmitFrame(std::move(context), onscreen_gl_context_,
resource_gl_context_);
bool submitted = platform_views_controller->SubmitFrame(std::move(context), context_);
[CATransaction commit];
return submitted;
}
......
......@@ -184,8 +184,7 @@ bool IOSSurfaceSoftware::SubmitFrame(GrContext* context) {
if (platform_views_controller == nullptr) {
return true;
}
return platform_views_controller->SubmitFrame(nullptr, fml::WeakPtr<IOSGLContext>(),
fml::WeakPtr<IOSGLContext>());
return platform_views_controller->SubmitFrame(nullptr, nullptr);
}
} // namespace flutter
......@@ -50,7 +50,7 @@ class PlatformViewIOS final : public PlatformView {
private:
fml::WeakPtr<FlutterViewController> owner_controller_;
std::unique_ptr<IOSSurface> ios_surface_;
std::unique_ptr<IOSGLContext> resource_gl_context_;
std::shared_ptr<IOSGLContext> gl_context_;
PlatformMessageRouter platform_message_router_;
std::unique_ptr<AccessibilityBridge> accessibility_bridge_;
fml::scoped_nsprotocol<FlutterTextInputPlugin*> text_input_plugin_;
......@@ -79,11 +79,6 @@ class PlatformViewIOS final : public PlatformView {
// |PlatformView|
void OnPreEngineRestart() const override;
// |PlatformView|
void NotifyDestroyed() override;
std::unique_ptr<IOSSurface> CreateIOSSurface() const;
FML_DISALLOW_COPY_AND_ASSIGN(PlatformViewIOS);
};
......
......@@ -23,7 +23,7 @@ PlatformViewIOS::PlatformViewIOS(PlatformView::Delegate& delegate,
flutter::TaskRunners task_runners)
: PlatformView(delegate, std::move(task_runners)) {
#if !TARGET_IPHONE_SIMULATOR
resource_gl_context_ = std::make_unique<IOSGLContext>();
gl_context_ = std::make_shared<IOSGLContext>();
#endif // !TARGET_IPHONE_SIMULATOR
}
......@@ -42,32 +42,10 @@ fml::WeakPtr<FlutterViewController> PlatformViewIOS::GetOwnerViewController() co
return owner_controller_;
}
std::unique_ptr<IOSSurface> PlatformViewIOS::CreateIOSSurface() const {
if (!owner_controller_) {
FML_DLOG(INFO) << "Could not CreateIOSSurface, this PlatformViewIOS "
"has no ViewController.";
return nullptr;
}
fml::WeakPtr<IOSGLContext> weak_gl_context;
if (resource_gl_context_) {
weak_gl_context = resource_gl_context_->GetWeakPtr();
}
std::unique_ptr<IOSSurface> ios_surface = [static_cast<FlutterView*>(owner_controller_.get().view)
createSurfaceWithResourceGLContext:weak_gl_context];
FML_DCHECK(ios_surface != nullptr);
return ios_surface;
}
void PlatformViewIOS::NotifyDestroyed() {
PlatformView::NotifyDestroyed();
ios_surface_.reset();
}
void PlatformViewIOS::SetOwnerViewController(fml::WeakPtr<FlutterViewController> owner_controller) {
if (ios_surface_ || !owner_controller) {
NotifyDestroyed();
ios_surface_.reset();
accessibility_bridge_.reset();
}
owner_controller_ = owner_controller;
......@@ -85,7 +63,10 @@ void PlatformViewIOS::SetOwnerViewController(fml::WeakPtr<FlutterViewController>
}]);
if (owner_controller_) {
ios_surface_ = CreateIOSSurface();
ios_surface_ =
[static_cast<FlutterView*>(owner_controller.get().view) createSurface:gl_context_];
FML_DCHECK(ios_surface_ != nullptr);
if (accessibility_bridge_) {
accessibility_bridge_.reset(
new AccessibilityBridge(static_cast<FlutterView*>(owner_controller_.get().view), this,
......@@ -112,18 +93,16 @@ void PlatformViewIOS::RegisterExternalTexture(int64_t texture_id,
// |PlatformView|
std::unique_ptr<Surface> PlatformViewIOS::CreateRenderingSurface() {
if (!ios_surface_) {
ios_surface_ = CreateIOSSurface();
if (!ios_surface_) {
return nullptr;
}
FML_DLOG(INFO) << "Could not CreateRenderingSurface, this PlatformViewIOS "
"has no ViewController.";
return nullptr;
}
return ios_surface_->CreateGPUSurface();
}
// |PlatformView|
sk_sp<GrContext> PlatformViewIOS::CreateResourceContext() const {
if (!resource_gl_context_ || !resource_gl_context_->MakeCurrent()) {
if (!gl_context_ || !gl_context_->ResourceMakeCurrent()) {
FML_DLOG(INFO) << "Could not make resource context current on IO thread. "
"Async texture uploads will be disabled. On Simulators, "
"this is expected.";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册