Skip to content

Commit 0771ced

Browse files
authored
Revert "Reland "Remove usage of Dart_AllocateWithNativeFields" (flutter#16713)"
This reverts commit 32905c9.
1 parent 75ce667 commit 0771ced

File tree

15 files changed

+122
-244
lines changed

15 files changed

+122
-244
lines changed

lib/ui/compositing.dart

Lines changed: 29 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -281,14 +281,12 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
281281
}) {
282282
assert(_matrix4IsValid(matrix4));
283283
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushTransform'));
284-
final EngineLayer engineLayer = EngineLayer._();
285-
_pushTransform(engineLayer, matrix4);
286-
final TransformEngineLayer layer = TransformEngineLayer._(engineLayer);
284+
final TransformEngineLayer layer = TransformEngineLayer._(_pushTransform(matrix4));
287285
assert(_debugPushLayer(layer));
288286
return layer;
289287
}
290288

291-
void _pushTransform(EngineLayer layer, Float64List matrix4) native 'SceneBuilder_pushTransform';
289+
EngineLayer _pushTransform(Float64List matrix4) native 'SceneBuilder_pushTransform';
292290

293291
/// Pushes an offset operation onto the operation stack.
294292
///
@@ -305,14 +303,12 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
305303
OffsetEngineLayer oldLayer,
306304
}) {
307305
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushOffset'));
308-
final EngineLayer engineLayer = EngineLayer._();
309-
_pushOffset(engineLayer, dx, dy);
310-
final OffsetEngineLayer layer = OffsetEngineLayer._(engineLayer);
306+
final OffsetEngineLayer layer = OffsetEngineLayer._(_pushOffset(dx, dy));
311307
assert(_debugPushLayer(layer));
312308
return layer;
313309
}
314310

315-
void _pushOffset(EngineLayer layer, double dx, double dy) native 'SceneBuilder_pushOffset';
311+
EngineLayer _pushOffset(double dx, double dy) native 'SceneBuilder_pushOffset';
316312

317313
/// Pushes a rectangular clip operation onto the operation stack.
318314
///
@@ -332,14 +328,13 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
332328
assert(clipBehavior != null);
333329
assert(clipBehavior != Clip.none);
334330
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushClipRect'));
335-
final EngineLayer engineLayer = EngineLayer._();
336-
_pushClipRect(engineLayer, rect.left, rect.right, rect.top, rect.bottom, clipBehavior.index);
337-
final ClipRectEngineLayer layer = ClipRectEngineLayer._(engineLayer);
331+
final ClipRectEngineLayer layer = ClipRectEngineLayer._(
332+
_pushClipRect(rect.left, rect.right, rect.top, rect.bottom, clipBehavior.index));
338333
assert(_debugPushLayer(layer));
339334
return layer;
340335
}
341336

342-
void _pushClipRect(EngineLayer outEngineLayer, double left, double right, double top, double bottom, int clipBehavior)
337+
EngineLayer _pushClipRect(double left, double right, double top, double bottom, int clipBehavior)
343338
native 'SceneBuilder_pushClipRect';
344339

345340
/// Pushes a rounded-rectangular clip operation onto the operation stack.
@@ -360,14 +355,13 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
360355
assert(clipBehavior != null);
361356
assert(clipBehavior != Clip.none);
362357
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushClipRRect'));
363-
final EngineLayer engineLayer = EngineLayer._();
364-
_pushClipRRect(engineLayer, rrect._value32, clipBehavior.index);
365-
final ClipRRectEngineLayer layer = ClipRRectEngineLayer._(engineLayer);
358+
final ClipRRectEngineLayer layer =
359+
ClipRRectEngineLayer._(_pushClipRRect(rrect._value32, clipBehavior.index));
366360
assert(_debugPushLayer(layer));
367361
return layer;
368362
}
369363

370-
void _pushClipRRect(EngineLayer layer, Float32List rrect, int clipBehavior)
364+
EngineLayer _pushClipRRect(Float32List rrect, int clipBehavior)
371365
native 'SceneBuilder_pushClipRRect';
372366

373367
/// Pushes a path clip operation onto the operation stack.
@@ -388,14 +382,13 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
388382
assert(clipBehavior != null);
389383
assert(clipBehavior != Clip.none);
390384
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushClipPath'));
391-
final EngineLayer engineLayer = EngineLayer._();
392-
_pushClipPath(engineLayer, path, clipBehavior.index);
393-
final ClipPathEngineLayer layer = ClipPathEngineLayer._(engineLayer);
385+
final ClipPathEngineLayer layer =
386+
ClipPathEngineLayer._(_pushClipPath(path, clipBehavior.index));
394387
assert(_debugPushLayer(layer));
395388
return layer;
396389
}
397390

398-
void _pushClipPath(EngineLayer layer, Path path, int clipBehavior) native 'SceneBuilder_pushClipPath';
391+
EngineLayer _pushClipPath(Path path, int clipBehavior) native 'SceneBuilder_pushClipPath';
399392

400393
/// Pushes an opacity operation onto the operation stack.
401394
///
@@ -415,14 +408,13 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
415408
OpacityEngineLayer oldLayer,
416409
}) {
417410
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushOpacity'));
418-
final EngineLayer engineLayer = EngineLayer._();
419-
_pushOpacity(engineLayer, alpha, offset.dx, offset.dy);
420-
final OpacityEngineLayer layer = OpacityEngineLayer._(engineLayer);
411+
final OpacityEngineLayer layer =
412+
OpacityEngineLayer._(_pushOpacity(alpha, offset.dx, offset.dy));
421413
assert(_debugPushLayer(layer));
422414
return layer;
423415
}
424416

425-
void _pushOpacity(EngineLayer layer, int alpha, double dx, double dy) native 'SceneBuilder_pushOpacity';
417+
EngineLayer _pushOpacity(int alpha, double dx, double dy) native 'SceneBuilder_pushOpacity';
426418

427419
/// Pushes a color filter operation onto the operation stack.
428420
///
@@ -442,14 +434,12 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
442434
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushColorFilter'));
443435
final _ColorFilter nativeFilter = filter._toNativeColorFilter();
444436
assert(nativeFilter != null);
445-
final EngineLayer engineLayer = EngineLayer._();
446-
_pushColorFilter(engineLayer, nativeFilter);
447-
final ColorFilterEngineLayer layer = ColorFilterEngineLayer._(engineLayer);
437+
final ColorFilterEngineLayer layer = ColorFilterEngineLayer._(_pushColorFilter(nativeFilter));
448438
assert(_debugPushLayer(layer));
449439
return layer;
450440
}
451441

452-
void _pushColorFilter(EngineLayer layer, _ColorFilter filter) native 'SceneBuilder_pushColorFilter';
442+
EngineLayer _pushColorFilter(_ColorFilter filter) native 'SceneBuilder_pushColorFilter';
453443

454444
/// Pushes an image filter operation onto the operation stack.
455445
///
@@ -469,14 +459,12 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
469459
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushImageFilter'));
470460
final _ImageFilter nativeFilter = filter._toNativeImageFilter();
471461
assert(nativeFilter != null);
472-
final EngineLayer engineLayer = EngineLayer._();
473-
_pushImageFilter(engineLayer, nativeFilter);
474-
final ImageFilterEngineLayer layer = ImageFilterEngineLayer._(engineLayer);
462+
final ImageFilterEngineLayer layer = ImageFilterEngineLayer._(_pushImageFilter(nativeFilter));
475463
assert(_debugPushLayer(layer));
476464
return layer;
477465
}
478466

479-
void _pushImageFilter(EngineLayer outEngineLayer, _ImageFilter filter) native 'SceneBuilder_pushImageFilter';
467+
EngineLayer _pushImageFilter(_ImageFilter filter) native 'SceneBuilder_pushImageFilter';
480468

481469
/// Pushes a backdrop filter operation onto the operation stack.
482470
///
@@ -493,14 +481,13 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
493481
BackdropFilterEngineLayer oldLayer,
494482
}) {
495483
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushBackdropFilter'));
496-
final EngineLayer engineLayer = EngineLayer._();
497-
_pushBackdropFilter(engineLayer, filter._toNativeImageFilter());
498-
final BackdropFilterEngineLayer layer = BackdropFilterEngineLayer._(engineLayer);
484+
final BackdropFilterEngineLayer layer =
485+
BackdropFilterEngineLayer._(_pushBackdropFilter(filter._toNativeImageFilter()));
499486
assert(_debugPushLayer(layer));
500487
return layer;
501488
}
502489

503-
void _pushBackdropFilter(EngineLayer outEngineLayer, _ImageFilter filter) native 'SceneBuilder_pushBackdropFilter';
490+
EngineLayer _pushBackdropFilter(_ImageFilter filter) native 'SceneBuilder_pushBackdropFilter';
504491

505492
/// Pushes a shader mask operation onto the operation stack.
506493
///
@@ -519,23 +506,13 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
519506
ShaderMaskEngineLayer oldLayer,
520507
}) {
521508
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushShaderMask'));
522-
final EngineLayer engineLayer = EngineLayer._();
523-
_pushShaderMask(
524-
engineLayer,
525-
shader,
526-
maskRect.left,
527-
maskRect.right,
528-
maskRect.top,
529-
maskRect.bottom,
530-
blendMode.index,
531-
);
532-
final ShaderMaskEngineLayer layer = ShaderMaskEngineLayer._(engineLayer);
509+
final ShaderMaskEngineLayer layer = ShaderMaskEngineLayer._(_pushShaderMask(
510+
shader, maskRect.left, maskRect.right, maskRect.top, maskRect.bottom, blendMode.index));
533511
assert(_debugPushLayer(layer));
534512
return layer;
535513
}
536514

537515
EngineLayer _pushShaderMask(
538-
EngineLayer engineLayer,
539516
Shader shader,
540517
double maskRectLeft,
541518
double maskRectRight,
@@ -569,21 +546,13 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
569546
PhysicalShapeEngineLayer oldLayer,
570547
}) {
571548
assert(_debugCheckCanBeUsedAsOldLayer(oldLayer, 'pushPhysicalShape'));
572-
final EngineLayer engineLayer = EngineLayer._();
573-
_pushPhysicalShape(
574-
engineLayer,
575-
path,
576-
elevation,
577-
color.value,
578-
shadowColor?.value ?? 0xFF000000,
579-
clipBehavior.index,
580-
);
581-
final PhysicalShapeEngineLayer layer = PhysicalShapeEngineLayer._(engineLayer);
549+
final PhysicalShapeEngineLayer layer = PhysicalShapeEngineLayer._(_pushPhysicalShape(
550+
path, elevation, color.value, shadowColor?.value ?? 0xFF000000, clipBehavior.index));
582551
assert(_debugPushLayer(layer));
583552
return layer;
584553
}
585554

586-
EngineLayer _pushPhysicalShape(EngineLayer outEngineLayer, Path path, double elevation, int color, int shadowColor,
555+
EngineLayer _pushPhysicalShape(Path path, double elevation, int color, int shadowColor,
587556
int clipBehavior) native 'SceneBuilder_pushPhysicalShape';
588557

589558
/// Ends the effect of the most recently pushed operation.
@@ -801,13 +770,7 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
801770
///
802771
/// After calling this function, the scene builder object is invalid and
803772
/// cannot be used further.
804-
Scene build() {
805-
final Scene scene = Scene._();
806-
_build(scene);
807-
return scene;
808-
}
809-
810-
void _build(Scene outScene) native 'SceneBuilder_build';
773+
Scene build() native 'SceneBuilder_build';
811774
}
812775

813776
/// (Fuchsia-only) Hosts content provided by another application.

lib/ui/compositing/scene.cc

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,13 @@ IMPLEMENT_WRAPPERTYPEINFO(ui, Scene);
2626

2727
DART_BIND_ALL(Scene, FOR_EACH_BINDING)
2828

29-
void Scene::create(Dart_Handle scene_handle,
30-
std::shared_ptr<flutter::Layer> rootLayer,
31-
uint32_t rasterizerTracingThreshold,
32-
bool checkerboardRasterCacheImages,
33-
bool checkerboardOffscreenLayers) {
34-
auto scene = fml::MakeRefCounted<Scene>(
29+
fml::RefPtr<Scene> Scene::create(std::shared_ptr<flutter::Layer> rootLayer,
30+
uint32_t rasterizerTracingThreshold,
31+
bool checkerboardRasterCacheImages,
32+
bool checkerboardOffscreenLayers) {
33+
return fml::MakeRefCounted<Scene>(
3534
std::move(rootLayer), rasterizerTracingThreshold,
3635
checkerboardRasterCacheImages, checkerboardOffscreenLayers);
37-
scene->ClaimDartHandle(scene_handle);
3836
}
3937

4038
Scene::Scene(std::shared_ptr<flutter::Layer> rootLayer,

lib/ui/compositing/scene.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,10 @@ class Scene : public RefCountedDartWrappable<Scene> {
2424

2525
public:
2626
~Scene() override;
27-
static void create(Dart_Handle scene_handle,
28-
std::shared_ptr<flutter::Layer> rootLayer,
29-
uint32_t rasterizerTracingThreshold,
30-
bool checkerboardRasterCacheImages,
31-
bool checkerboardOffscreenLayers);
27+
static fml::RefPtr<Scene> create(std::shared_ptr<flutter::Layer> rootLayer,
28+
uint32_t rasterizerTracingThreshold,
29+
bool checkerboardRasterCacheImages,
30+
bool checkerboardOffscreenLayers);
3231

3332
std::unique_ptr<flutter::LayerTree> takeLayerTree();
3433

0 commit comments

Comments
 (0)