Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_43355755
engine
提交
0c7c4772
E
engine
项目概览
weixin_43355755
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
0c7c4772
编写于
10月 19, 2020
作者:
J
Jenn Magder
提交者:
GitHub
10月 19, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Revert "[ios] Refactor IOSSurface factory and unify surface creation (#21877)" (#21970)
上级
25d8fa5a
变更
17
隐藏空白更改
内联
并排
Showing
17 changed file
with
46 addition
and
167 deletion
+46
-167
ci/licenses_golden/licenses_flutter
ci/licenses_golden/licenses_flutter
+0
-2
shell/platform/darwin/ios/BUILD.gn
shell/platform/darwin/ios/BUILD.gn
+0
-2
shell/platform/darwin/ios/framework/Source/FlutterEngine.mm
shell/platform/darwin/ios/framework/Source/FlutterEngine.mm
+8
-18
shell/platform/darwin/ios/framework/Source/FlutterEnginePlatformViewTest.mm
...win/ios/framework/Source/FlutterEnginePlatformViewTest.mm
+0
-1
shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h
...platform/darwin/ios/framework/Source/FlutterOverlayView.h
+2
-0
shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm
...latform/darwin/ios/framework/Source/FlutterOverlayView.mm
+8
-0
shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm
...tform/darwin/ios/framework/Source/FlutterPlatformViews.mm
+4
-5
shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm
...m/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm
+7
-35
shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h
...rwin/ios/framework/Source/FlutterPlatformViews_Internal.h
+2
-7
shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.mm
...win/ios/framework/Source/FlutterPlatformViews_Internal.mm
+2
-3
shell/platform/darwin/ios/framework/Source/FlutterView.h
shell/platform/darwin/ios/framework/Source/FlutterView.h
+1
-0
shell/platform/darwin/ios/framework/Source/FlutterView.mm
shell/platform/darwin/ios/framework/Source/FlutterView.mm
+9
-0
shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm
.../darwin/ios/framework/Source/accessibility_bridge_test.mm
+1
-16
shell/platform/darwin/ios/ios_surface_factory.h
shell/platform/darwin/ios/ios_surface_factory.h
+0
-39
shell/platform/darwin/ios/ios_surface_factory.mm
shell/platform/darwin/ios/ios_surface_factory.mm
+0
-30
shell/platform/darwin/ios/platform_view_ios.h
shell/platform/darwin/ios/platform_view_ios.h
+0
-3
shell/platform/darwin/ios/platform_view_ios.mm
shell/platform/darwin/ios/platform_view_ios.mm
+2
-6
未找到文件。
ci/licenses_golden/licenses_flutter
浏览文件 @
0c7c4772
...
...
@@ -1010,8 +1010,6 @@ FILE: ../../../flutter/shell/platform/darwin/ios/ios_render_target_gl.h
FILE: ../../../flutter/shell/platform/darwin/ios/ios_render_target_gl.mm
FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface.h
FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface.mm
FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_factory.h
FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_factory.mm
FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_gl.h
FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_gl.mm
FILE: ../../../flutter/shell/platform/darwin/ios/ios_surface_metal.h
...
...
shell/platform/darwin/ios/BUILD.gn
浏览文件 @
0c7c4772
...
...
@@ -99,8 +99,6 @@ source_set("flutter_framework_source") {
"ios_render_target_gl.mm",
"ios_surface.h",
"ios_surface.mm",
"ios_surface_factory.h",
"ios_surface_factory.mm",
"ios_surface_gl.h",
"ios_surface_gl.mm",
"ios_surface_software.h",
...
...
shell/platform/darwin/ios/framework/Source/FlutterEngine.mm
浏览文件 @
0c7c4772
...
...
@@ -28,9 +28,7 @@
#import "flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/profiler_metrics_ios.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h"
#import "flutter/shell/platform/darwin/ios/ios_context.h"
#import "flutter/shell/platform/darwin/ios/ios_surface.h"
#import "flutter/shell/platform/darwin/ios/ios_surface_factory.h"
#import "flutter/shell/platform/darwin/ios/platform_view_ios.h"
#import "flutter/shell/platform/darwin/ios/rendering_api_selection.h"
#include "flutter/shell/profiling/sampling_profiler.h"
...
...
@@ -65,7 +63,6 @@ static constexpr int kNumProfilerSamplesPerSec = 5;
fml
::
WeakPtr
<
FlutterViewController
>
_viewController
;
fml
::
scoped_nsobject
<
FlutterObservatoryPublisher
>
_publisher
;
std
::
shared_ptr
<
flutter
::
IOSSurfaceFactory
>
_surfaceFactory
;
std
::
unique_ptr
<
flutter
::
FlutterPlatformViewsController
>
_platformViewsController
;
std
::
unique_ptr
<
flutter
::
ProfilerMetricsIOS
>
_profiler_metrics
;
std
::
unique_ptr
<
flutter
::
SamplingProfiler
>
_profiler
;
...
...
@@ -131,7 +128,7 @@ static constexpr int kNumProfilerSamplesPerSec = 5;
_pluginPublications
=
[
NSMutableDictionary
new
];
_registrars
=
[[
NSMutableDictionary
alloc
]
init
];
[
self
ensurePlatformViewController
]
;
_platformViewsController
.
reset
(
new
flutter
::
FlutterPlatformViewsController
())
;
_binaryMessenger
=
[[
FlutterBinaryMessengerRelay
alloc
]
initWithParent
:
self
];
_connections
.
reset
(
new
flutter
::
ConnectionCollection
());
...
...
@@ -165,16 +162,6 @@ static constexpr int kNumProfilerSamplesPerSec = 5;
return
self
;
}
-
(
void
)
ensurePlatformViewController
{
if
(
!
_platformViewsController
)
{
auto
renderingApi
=
flutter
::
GetRenderingAPIForProcess
(
FlutterView
.
forceSoftwareRendering
);
_surfaceFactory
=
flutter
::
IOSSurfaceFactory
::
Create
(
renderingApi
);
auto
pvc
=
new
flutter
::
FlutterPlatformViewsController
(
_surfaceFactory
);
_surfaceFactory
->
SetPlatformViewsController
(
pvc
);
_platformViewsController
.
reset
(
pvc
);
}
}
-
(
void
)
dealloc
{
/// Notify plugins of dealloc. This should happen first in dealloc since the
/// plugins may be talking to things like the binaryMessenger.
...
...
@@ -533,13 +520,13 @@ static constexpr int kNumProfilerSamplesPerSec = 5;
threadHostType
};
// Lambda captures by pointers to ObjC objects are fine here because the
// create call is synchronous.
// create call is
// synchronous.
flutter
::
Shell
::
CreateCallback
<
flutter
::
PlatformView
>
on_create_platform_view
=
[
self
](
flutter
::
Shell
&
shell
)
{
[
self
ensurePlatformViewController
];
[](
flutter
::
Shell
&
shell
)
{
return
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
shell
,
flutter
::
GetRenderingAPIForProcess
(
FlutterView
.
forceSoftwareRendering
),
s
elf
->
_surfaceFactory
,
s
hell
.
GetTaskRunners
());
shell
.
GetTaskRunners
());
};
flutter
::
Shell
::
CreateCallback
<
flutter
::
Rasterizer
>
on_create_rasterizer
=
...
...
@@ -567,6 +554,9 @@ static constexpr int kNumProfilerSamplesPerSec = 5;
[
self
setupChannels
];
[
self
onLocaleUpdated
:
nil
];
[
self
initializeDisplays
];
if
(
!
_platformViewsController
)
{
_platformViewsController
.
reset
(
new
flutter
::
FlutterPlatformViewsController
());
}
_publisher
.
reset
([[
FlutterObservatoryPublisher
alloc
]
initWithEnableObservatoryPublication:
settings
.
enable_observatory_publication
]);
[
self
maybeSetupPlatformViewChannels
];
...
...
shell/platform/darwin/ios/framework/Source/FlutterEnginePlatformViewTest.mm
浏览文件 @
0c7c4772
...
...
@@ -67,7 +67,6 @@ class MockDelegate : public PlatformView::Delegate {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
id
project
=
OCMClassMock
([
FlutterDartProject
class
]);
...
...
shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h
浏览文件 @
0c7c4772
...
...
@@ -35,6 +35,8 @@
-
(
instancetype
)
init
NS_DESIGNATED_INITIALIZER
;
-
(
instancetype
)
initWithContentsScale
:(
CGFloat
)
contentsScale
;
-
(
std
::
unique_ptr
<
flutter
::
IOSSurface
>
)
createSurface
:
(
std
::
shared_ptr
<
flutter
::
IOSContext
>
)
ios_context
;
@end
...
...
shell/platform/darwin/ios/framework/Source/FlutterOverlayView.mm
浏览文件 @
0c7c4772
...
...
@@ -62,6 +62,14 @@
return
[
FlutterView
layerClass
];
}
-
(
std
::
unique_ptr
<
flutter
::
IOSSurface
>
)
createSurface
:
(
std
::
shared_ptr
<
flutter
::
IOSContext
>
)
ios_context
{
return
flutter
::
IOSSurface
::
Create
(
std
::
move
(
ios_context
),
// context
fml
::
scoped_nsobject
<
CALayer
>
{[
self
.
layer
retain
]},
// layer
nullptr
// platform views controller
);
}
// TODO(amirh): implement drawLayer to support snapshotting.
@end
shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm
浏览文件 @
0c7c4772
...
...
@@ -16,7 +16,6 @@
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterOverlayView.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h"
#import "flutter/shell/platform/darwin/ios/ios_surface.h"
#import "flutter/shell/platform/darwin/ios/ios_surface_factory.h"
#import "flutter/shell/platform/darwin/ios/ios_surface_gl.h"
namespace
flutter
{
...
...
@@ -33,8 +32,8 @@ std::shared_ptr<FlutterPlatformViewLayer> FlutterPlatformViewLayerPool::GetLayer
overlay_view
.
reset
([[
FlutterOverlayView
alloc
]
init
]);
overlay_view_wrapper
.
reset
([[
FlutterOverlayView
alloc
]
init
]);
auto
ca_layer
=
fml
::
scoped_nsobject
<
CALayer
>
{[[
overlay_view
.
get
()
layer
]
retain
]};
std
::
unique_ptr
<
IOSSurface
>
ios_surface
=
ios_surface_factory_
->
CreateSurface
(
ca_layer
)
;
std
::
unique_ptr
<
IOSSurface
>
ios_surface
=
[
overlay_view
.
get
()
createSurface
:
std
:
:
move
(
ios_context
)]
;
std
::
unique_ptr
<
Surface
>
surface
=
ios_surface
->
CreateGPUSurface
();
layer
=
std
::
make_shared
<
FlutterPlatformViewLayer
>
(
...
...
@@ -45,8 +44,8 @@ std::shared_ptr<FlutterPlatformViewLayer> FlutterPlatformViewLayerPool::GetLayer
overlay_view
.
reset
([[
FlutterOverlayView
alloc
]
initWithContentsScale
:
screenScale
]);
overlay_view_wrapper
.
reset
([[
FlutterOverlayView
alloc
]
initWithContentsScale
:
screenScale
]);
auto
ca_layer
=
fml
::
scoped_nsobject
<
CALayer
>
{[[
overlay_view
.
get
()
layer
]
retain
]};
std
::
unique_ptr
<
IOSSurface
>
ios_surface
=
ios_surface_factory_
->
CreateSurface
(
ca_layer
)
;
std
::
unique_ptr
<
IOSSurface
>
ios_surface
=
[
overlay_view
.
get
()
createSurface
:
std
:
:
move
(
ios_context
)]
;
std
::
unique_ptr
<
Surface
>
surface
=
ios_surface
->
CreateGPUSurface
(
gr_context
);
layer
=
std
::
make_shared
<
FlutterPlatformViewLayer
>
(
...
...
shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm
浏览文件 @
0c7c4772
...
...
@@ -121,16 +121,12 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
/*raster=*/
thread_task_runner
,
/*ui=*/
thread_task_runner
,
/*io=*/
thread_task_runner
);
auto
surface_factory
=
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
);
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
/*ios_surface_factory=*/
surface_factory
,
/*task_runners=*/
runners
);
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
(
surface_factory
);
surface_factory
->
SetPlatformViewsController
(
flutterPlatformViewsController
.
get
());
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
();
FlutterPlatformViewsTestMockFlutterPlatformFactory
*
factory
=
[[
FlutterPlatformViewsTestMockFlutterPlatformFactory
new
]
autorelease
];
...
...
@@ -179,16 +175,12 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
/*raster=*/
thread_task_runner
,
/*ui=*/
thread_task_runner
,
/*io=*/
thread_task_runner
);
auto
surface_factory
=
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
);
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
/*ios_surface_factory=*/
surface_factory
,
/*task_runners=*/
runners
);
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
(
surface_factory
);
surface_factory
->
SetPlatformViewsController
(
flutterPlatformViewsController
.
get
());
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
();
FlutterPlatformViewsTestMockFlutterPlatformFactory
*
factory
=
[[
FlutterPlatformViewsTestMockFlutterPlatformFactory
new
]
autorelease
];
...
...
@@ -238,16 +230,12 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
/*raster=*/
thread_task_runner
,
/*ui=*/
thread_task_runner
,
/*io=*/
thread_task_runner
);
auto
surface_factory
=
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
);
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
/*ios_surface_factory=*/
surface_factory
,
/*task_runners=*/
runners
);
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
(
surface_factory
);
surface_factory
->
SetPlatformViewsController
(
flutterPlatformViewsController
.
get
());
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
();
FlutterPlatformViewsTestMockFlutterPlatformFactory
*
factory
=
[[
FlutterPlatformViewsTestMockFlutterPlatformFactory
new
]
autorelease
];
...
...
@@ -313,16 +301,12 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
/*raster=*/
thread_task_runner
,
/*ui=*/
thread_task_runner
,
/*io=*/
thread_task_runner
);
auto
surface_factory
=
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
);
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
/*ios_surface_factory=*/
surface_factory
,
/*task_runners=*/
runners
);
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
(
surface_factory
);
surface_factory
->
SetPlatformViewsController
(
flutterPlatformViewsController
.
get
());
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
();
FlutterPlatformViewsTestMockFlutterPlatformFactory
*
factory
=
[[
FlutterPlatformViewsTestMockFlutterPlatformFactory
new
]
autorelease
];
...
...
@@ -389,16 +373,12 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
/*raster=*/
thread_task_runner
,
/*ui=*/
thread_task_runner
,
/*io=*/
thread_task_runner
);
auto
surface_factory
=
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
);
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
/*ios_surface_factory=*/
surface_factory
,
/*task_runners=*/
runners
);
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
(
surface_factory
);
surface_factory
->
SetPlatformViewsController
(
flutterPlatformViewsController
.
get
());
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
();
FlutterPlatformViewsTestMockFlutterPlatformFactory
*
factory
=
[[
FlutterPlatformViewsTestMockFlutterPlatformFactory
new
]
autorelease
];
...
...
@@ -465,16 +445,12 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
/*raster=*/
thread_task_runner
,
/*ui=*/
thread_task_runner
,
/*io=*/
thread_task_runner
);
auto
surface_factory
=
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
);
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
/*ios_surface_factory=*/
surface_factory
,
/*task_runners=*/
runners
);
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
(
surface_factory
);
surface_factory
->
SetPlatformViewsController
(
flutterPlatformViewsController
.
get
());
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
();
FlutterPlatformViewsTestMockFlutterPlatformFactory
*
factory
=
[[
FlutterPlatformViewsTestMockFlutterPlatformFactory
new
]
autorelease
];
...
...
@@ -542,16 +518,12 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
/*raster=*/
thread_task_runner
,
/*ui=*/
thread_task_runner
,
/*io=*/
thread_task_runner
);
auto
surface_factory
=
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
);
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
/*ios_surface_factory=*/
surface_factory
,
/*task_runners=*/
runners
);
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
(
surface_factory
);
surface_factory
->
SetPlatformViewsController
(
flutterPlatformViewsController
.
get
());
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
();
FlutterPlatformViewsTestMockFlutterPlatformFactory
*
factory
=
[[
FlutterPlatformViewsTestMockFlutterPlatformFactory
new
]
autorelease
];
...
...
shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h
浏览文件 @
0c7c4772
...
...
@@ -61,7 +61,6 @@ void ResetAnchor(CALayer* layer);
class
IOSContextGL
;
class
IOSSurface
;
class
IOSSurfaceFactory
;
struct
FlutterPlatformViewLayer
{
FlutterPlatformViewLayer
(
fml
::
scoped_nsobject
<
UIView
>
overlay_view
,
...
...
@@ -88,9 +87,7 @@ struct FlutterPlatformViewLayer {
// This class isn't thread safe.
class
FlutterPlatformViewLayerPool
{
public:
FlutterPlatformViewLayerPool
(
std
::
shared_ptr
<
IOSSurfaceFactory
>
ios_surface_factory
)
:
ios_surface_factory_
(
ios_surface_factory
)
{}
FlutterPlatformViewLayerPool
()
=
default
;
~
FlutterPlatformViewLayerPool
()
=
default
;
// Gets a layer from the pool if available, or allocates a new one.
...
...
@@ -121,14 +118,12 @@ class FlutterPlatformViewLayerPool {
size_t
available_layer_index_
=
0
;
std
::
vector
<
std
::
shared_ptr
<
FlutterPlatformViewLayer
>>
layers_
;
const
std
::
shared_ptr
<
IOSSurfaceFactory
>
ios_surface_factory_
;
FML_DISALLOW_COPY_AND_ASSIGN
(
FlutterPlatformViewLayerPool
);
};
class
FlutterPlatformViewsController
{
public:
FlutterPlatformViewsController
(
std
::
shared_ptr
<
IOSSurfaceFactory
>
surface_factory
);
FlutterPlatformViewsController
();
~
FlutterPlatformViewsController
();
...
...
shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.mm
浏览文件 @
0c7c4772
...
...
@@ -23,9 +23,8 @@ FlutterPlatformViewLayer::FlutterPlatformViewLayer(
FlutterPlatformViewLayer
::~
FlutterPlatformViewLayer
()
=
default
;
FlutterPlatformViewsController
::
FlutterPlatformViewsController
(
std
::
shared_ptr
<
IOSSurfaceFactory
>
surface_factory
)
:
layer_pool_
(
std
::
make_unique
<
FlutterPlatformViewLayerPool
>
(
surface_factory
)),
FlutterPlatformViewsController
::
FlutterPlatformViewsController
()
:
layer_pool_
(
std
::
make_unique
<
FlutterPlatformViewLayerPool
>
()),
weak_factory_
(
std
::
make_unique
<
fml
::
WeakPtrFactory
<
FlutterPlatformViewsController
>>
(
this
)){};
FlutterPlatformViewsController
::~
FlutterPlatformViewsController
()
=
default
;
...
...
shell/platform/darwin/ios/framework/Source/FlutterView.h
浏览文件 @
0c7c4772
...
...
@@ -32,6 +32,7 @@
-
(
instancetype
)
initWithDelegate
:(
id
<
FlutterViewEngineDelegate
>
)
delegate
opaque
:(
BOOL
)
opaque
NS_DESIGNATED_INITIALIZER
;
-
(
std
::
unique_ptr
<
flutter
::
IOSSurface
>
)
createSurface
:(
std
::
shared_ptr
<
flutter
::
IOSContext
>
)
context
;
// Set by FlutterEngine or FlutterViewController to override software rendering.
@property
(
class
,
nonatomic
)
BOOL
forceSoftwareRendering
;
...
...
shell/platform/darwin/ios/framework/Source/FlutterView.mm
浏览文件 @
0c7c4772
...
...
@@ -83,6 +83,15 @@ static BOOL _forceSoftwareRendering;
flutter
::
GetRenderingAPIForProcess
(
FlutterView
.
forceSoftwareRendering
));
}
-
(
std
::
unique_ptr
<
flutter
::
IOSSurface
>
)
createSurface
:
(
std
::
shared_ptr
<
flutter
::
IOSContext
>
)
ios_context
{
return
flutter
::
IOSSurface
::
Create
(
std
::
move
(
ios_context
),
// context
fml
::
scoped_nsobject
<
CALayer
>
{[
self
.
layer
retain
]},
// layer
[
_delegate
platformViewsController
]
// platform views controller
);
}
-
(
void
)
drawLayer
:(
CALayer
*
)
layer
inContext
:(
CGContextRef
)
context
{
TRACE_EVENT0
(
"flutter"
,
"SnapshotFlutterView"
);
...
...
shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm
浏览文件 @
0c7c4772
...
...
@@ -137,7 +137,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
auto
bridge
=
std
::
make_unique
<
flutter
::
AccessibilityBridge
>
(
/*view=*/
nil
,
...
...
@@ -157,7 +156,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
id
mockFlutterView
=
OCMClassMock
([
FlutterView
class
]);
id
mockFlutterViewController
=
OCMClassMock
([
FlutterViewController
class
]);
...
...
@@ -184,7 +182,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
id
mockFlutterView
=
OCMClassMock
([
FlutterView
class
]);
id
mockFlutterViewController
=
OCMClassMock
([
FlutterViewController
class
]);
...
...
@@ -227,12 +224,9 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
/*raster=*/
thread_task_runner
,
/*ui=*/
thread_task_runner
,
/*io=*/
thread_task_runner
);
auto
surfaceFactory
=
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
);
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
/*ios_surface_factory=*/
surfaceFactory
,
/*task_runners=*/
runners
);
id
mockFlutterView
=
OCMClassMock
([
FlutterView
class
]);
id
mockFlutterViewController
=
OCMClassMock
([
FlutterViewController
class
]);
...
...
@@ -240,9 +234,8 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
std
::
string
label
=
"some label"
;
auto
flutterPlatformViewsController
=
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
(
surfaceFactory
);
std
::
make_unique
<
flutter
::
FlutterPlatformViewsController
>
();
flutterPlatformViewsController
->
SetFlutterView
(
mockFlutterView
);
surfaceFactory
->
SetPlatformViewsController
(
flutterPlatformViewsController
.
get
());
MockFlutterPlatformFactory
*
factory
=
[[
MockFlutterPlatformFactory
new
]
autorelease
];
flutterPlatformViewsController
->
RegisterViewFactory
(
...
...
@@ -286,7 +279,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
id
mockFlutterView
=
OCMClassMock
([
FlutterView
class
]);
id
mockFlutterViewController
=
OCMClassMock
([
FlutterViewController
class
]);
...
...
@@ -352,7 +344,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
id
mockFlutterView
=
OCMClassMock
([
FlutterView
class
]);
id
mockFlutterViewController
=
OCMClassMock
([
FlutterViewController
class
]);
...
...
@@ -420,7 +411,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
id
mockFlutterViewController
=
OCMClassMock
([
FlutterViewController
class
]);
id
mockFlutterView
=
OCMClassMock
([
FlutterView
class
]);
...
...
@@ -487,7 +477,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
id
mockFlutterViewController
=
OCMClassMock
([
FlutterViewController
class
]);
id
mockFlutterView
=
OCMClassMock
([
FlutterView
class
]);
...
...
@@ -560,7 +549,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
id
mockFlutterViewController
=
OCMClassMock
([
FlutterViewController
class
]);
id
mockFlutterView
=
OCMClassMock
([
FlutterView
class
]);
...
...
@@ -635,7 +623,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
id
mockFlutterViewController
=
OCMClassMock
([
FlutterViewController
class
]);
id
mockFlutterView
=
OCMClassMock
([
FlutterView
class
]);
...
...
@@ -706,7 +693,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
id
mockFlutterView
=
OCMClassMock
([
FlutterView
class
]);
id
mockFlutterViewController
=
OCMClassMock
([
FlutterViewController
class
]);
...
...
@@ -774,7 +760,6 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
auto
platform_view
=
std
::
make_unique
<
flutter
::
PlatformViewIOS
>
(
/*delegate=*/
mock_delegate
,
/*rendering_api=*/
flutter
::
IOSRenderingAPI
::
kSoftware
,
flutter
::
IOSSurfaceFactory
::
Create
(
flutter
::
IOSRenderingAPI
::
kSoftware
),
/*task_runners=*/
runners
);
fml
::
AutoResetWaitableEvent
latch
;
thread_task_runner
->
PostTask
([
&
]
{
...
...
shell/platform/darwin/ios/ios_surface_factory.h
已删除
100644 → 0
浏览文件 @
25d8fa5a
// Copyright 2013 The Flutter 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_SHELL_PLATFORM_DARWIN_IOS_IOS__SURFACE_FACTORY_H_
#define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_IOS__SURFACE_FACTORY_H_
#include <memory>
#import "flutter/shell/platform/darwin/ios/ios_surface.h"
#import "flutter/shell/platform/darwin/ios/rendering_api_selection.h"
namespace
flutter
{
class
IOSSurfaceFactory
{
public:
static
std
::
shared_ptr
<
IOSSurfaceFactory
>
Create
(
IOSRenderingAPI
rendering_api
);
explicit
IOSSurfaceFactory
(
std
::
shared_ptr
<
IOSContext
>
ios_context
);
~
IOSSurfaceFactory
();
void
SetPlatformViewsController
(
FlutterPlatformViewsController
*
platform_views_controller
);
std
::
unique_ptr
<
IOSSurface
>
CreateSurface
(
fml
::
scoped_nsobject
<
CALayer
>
ca_layer
);
private:
FlutterPlatformViewsController
*
platform_views_controller_
;
std
::
shared_ptr
<
IOSContext
>
ios_context_
;
FML_DISALLOW_COPY_AND_ASSIGN
(
IOSSurfaceFactory
);
};
}
// namespace flutter
#endif // FLUTTER_SHELL_PLATFORM_DARWIN_IOS_IOS__SURFACE_FACTORY_H_
shell/platform/darwin/ios/ios_surface_factory.mm
已删除
100644 → 0
浏览文件 @
25d8fa5a
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "flutter/shell/platform/darwin/ios/ios_surface_factory.h"
#import "flutter/shell/platform/darwin/ios/ios_context.h"
namespace
flutter
{
IOSSurfaceFactory
::
IOSSurfaceFactory
(
std
::
shared_ptr
<
IOSContext
>
ios_context
)
:
ios_context_
(
ios_context
)
{}
std
::
shared_ptr
<
IOSSurfaceFactory
>
IOSSurfaceFactory
::
Create
(
IOSRenderingAPI
rendering_api
)
{
std
::
shared_ptr
<
IOSContext
>
ios_context
=
IOSContext
::
Create
(
rendering_api
);
return
std
::
make_shared
<
IOSSurfaceFactory
>
(
ios_context
);
}
IOSSurfaceFactory
::~
IOSSurfaceFactory
()
=
default
;
void
IOSSurfaceFactory
::
SetPlatformViewsController
(
FlutterPlatformViewsController
*
platform_views_controller
)
{
platform_views_controller_
=
platform_views_controller
;
}
std
::
unique_ptr
<
IOSSurface
>
IOSSurfaceFactory
::
CreateSurface
(
fml
::
scoped_nsobject
<
CALayer
>
ca_layer
)
{
return
flutter
::
IOSSurface
::
Create
(
ios_context_
,
ca_layer
,
platform_views_controller_
);
}
}
// namespace flutter
shell/platform/darwin/ios/platform_view_ios.h
浏览文件 @
0c7c4772
...
...
@@ -19,7 +19,6 @@
#import "flutter/shell/platform/darwin/ios/framework/Source/platform_message_router.h"
#import "flutter/shell/platform/darwin/ios/ios_context.h"
#import "flutter/shell/platform/darwin/ios/ios_surface.h"
#import "flutter/shell/platform/darwin/ios/ios_surface_factory.h"
#import "flutter/shell/platform/darwin/ios/rendering_api_selection.h"
@
class
FlutterViewController
;
...
...
@@ -42,7 +41,6 @@ class PlatformViewIOS final : public PlatformView {
public:
explicit
PlatformViewIOS
(
PlatformView
::
Delegate
&
delegate
,
IOSRenderingAPI
rendering_api
,
std
::
shared_ptr
<
IOSSurfaceFactory
>
surface_factory
,
flutter
::
TaskRunners
task_runners
);
~
PlatformViewIOS
()
override
;
...
...
@@ -126,7 +124,6 @@ class PlatformViewIOS final : public PlatformView {
std
::
mutex
ios_surface_mutex_
;
std
::
unique_ptr
<
IOSSurface
>
ios_surface_
;
std
::
shared_ptr
<
IOSContext
>
ios_context_
;
std
::
shared_ptr
<
IOSSurfaceFactory
>
ios_surface_factory_
;
PlatformMessageRouter
platform_message_router_
;
AccessibilityBridgePtr
accessibility_bridge_
;
fml
::
scoped_nsprotocol
<
FlutterTextInputPlugin
*>
text_input_plugin_
;
...
...
shell/platform/darwin/ios/platform_view_ios.mm
浏览文件 @
0c7c4772
...
...
@@ -3,7 +3,6 @@
// found in the LICENSE file.
#import "flutter/shell/platform/darwin/ios/platform_view_ios.h"
#include <memory>
#include <utility>
...
...
@@ -47,11 +46,9 @@ void PlatformViewIOS::AccessibilityBridgePtr::reset(AccessibilityBridge* bridge)
PlatformViewIOS
::
PlatformViewIOS
(
PlatformView
::
Delegate
&
delegate
,
IOSRenderingAPI
rendering_api
,
std
::
shared_ptr
<
IOSSurfaceFactory
>
surface_factory
,
flutter
::
TaskRunners
task_runners
)
:
PlatformView
(
delegate
,
std
::
move
(
task_runners
)),
ios_context_
(
IOSContext
::
Create
(
rendering_api
)),
ios_surface_factory_
(
surface_factory
),
accessibility_bridge_
([
this
](
bool
enabled
)
{
PlatformView
::
SetSemanticsEnabled
(
enabled
);
})
{}
PlatformViewIOS
::~
PlatformViewIOS
()
=
default
;
...
...
@@ -105,9 +102,8 @@ void PlatformViewIOS::attachView() {
FML_DCHECK
(
owner_controller_
.
get
().
isViewLoaded
)
<<
"FlutterViewController's view should be loaded "
"before attaching to PlatformViewIOS."
;
auto
flutter_view
=
static_cast
<
FlutterView
*>
(
owner_controller_
.
get
().
view
);
auto
ca_layer
=
fml
::
scoped_nsobject
<
CALayer
>
{[[
flutter_view
layer
]
retain
]};
ios_surface_
=
ios_surface_factory_
->
CreateSurface
(
ca_layer
);
ios_surface_
=
[
static_cast
<
FlutterView
*>
(
owner_controller_
.
get
().
view
)
createSurface
:
ios_context_
];
FML_DCHECK
(
ios_surface_
!=
nullptr
);
if
(
accessibility_bridge_
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录