Unverified Commit b15b5b90 authored by Yegor's avatar Yegor Committed by GitHub

Do not copy paths, rects, and rrects when layer offset is zero (#34587)

parent 5d3efbde
...@@ -330,7 +330,7 @@ class TextureLayer extends Layer { ...@@ -330,7 +330,7 @@ class TextureLayer extends Layer {
@override @override
ui.EngineLayer addToScene(ui.SceneBuilder builder, [ Offset layerOffset = Offset.zero ]) { ui.EngineLayer addToScene(ui.SceneBuilder builder, [ Offset layerOffset = Offset.zero ]) {
final Rect shiftedRect = rect.shift(layerOffset); final Rect shiftedRect = layerOffset == Offset.zero ? rect : rect.shift(layerOffset);
builder.addTexture( builder.addTexture(
textureId, textureId,
offset: shiftedRect.topLeft, offset: shiftedRect.topLeft,
...@@ -370,7 +370,7 @@ class PlatformViewLayer extends Layer { ...@@ -370,7 +370,7 @@ class PlatformViewLayer extends Layer {
@override @override
ui.EngineLayer addToScene(ui.SceneBuilder builder, [ Offset layerOffset = Offset.zero ]) { ui.EngineLayer addToScene(ui.SceneBuilder builder, [ Offset layerOffset = Offset.zero ]) {
final Rect shiftedRect = rect.shift(layerOffset); final Rect shiftedRect = layerOffset == Offset.zero ? rect : rect.shift(layerOffset);
builder.addPlatformView( builder.addPlatformView(
viewId, viewId,
offset: shiftedRect.topLeft, offset: shiftedRect.topLeft,
...@@ -449,7 +449,8 @@ class PerformanceOverlayLayer extends Layer { ...@@ -449,7 +449,8 @@ class PerformanceOverlayLayer extends Layer {
@override @override
ui.EngineLayer addToScene(ui.SceneBuilder builder, [ Offset layerOffset = Offset.zero ]) { ui.EngineLayer addToScene(ui.SceneBuilder builder, [ Offset layerOffset = Offset.zero ]) {
assert(optionsMask != null); assert(optionsMask != null);
builder.addPerformanceOverlay(optionsMask, overlayRect.shift(layerOffset)); final Rect shiftedOverlayRect = layerOffset == Offset.zero ? overlayRect : overlayRect.shift(layerOffset);
builder.addPerformanceOverlay(optionsMask, shiftedOverlayRect);
builder.setRasterizerTracingThreshold(rasterizerThreshold); builder.setRasterizerTracingThreshold(rasterizerThreshold);
builder.setCheckerboardRasterCacheImages(checkerboardRasterCacheImages); builder.setCheckerboardRasterCacheImages(checkerboardRasterCacheImages);
builder.setCheckerboardOffscreenLayers(checkerboardOffscreenLayers); builder.setCheckerboardOffscreenLayers(checkerboardOffscreenLayers);
...@@ -1018,8 +1019,10 @@ class ClipRectLayer extends ContainerLayer { ...@@ -1018,8 +1019,10 @@ class ClipRectLayer extends ContainerLayer {
enabled = !debugDisableClipLayers; enabled = !debugDisableClipLayers;
return true; return true;
}()); }());
if (enabled) if (enabled) {
builder.pushClipRect(clipRect.shift(layerOffset), clipBehavior: clipBehavior); final Rect shiftedClipRect = layerOffset == Offset.zero ? clipRect : clipRect.shift(layerOffset);
builder.pushClipRect(shiftedClipRect, clipBehavior: clipBehavior);
}
addChildrenToScene(builder, layerOffset); addChildrenToScene(builder, layerOffset);
if (enabled) if (enabled)
builder.pop(); builder.pop();
...@@ -1097,8 +1100,10 @@ class ClipRRectLayer extends ContainerLayer { ...@@ -1097,8 +1100,10 @@ class ClipRRectLayer extends ContainerLayer {
enabled = !debugDisableClipLayers; enabled = !debugDisableClipLayers;
return true; return true;
}()); }());
if (enabled) if (enabled) {
builder.pushClipRRect(clipRRect.shift(layerOffset), clipBehavior: clipBehavior); final RRect shiftedClipRRect = layerOffset == Offset.zero ? clipRRect : clipRRect.shift(layerOffset);
builder.pushClipRRect(shiftedClipRRect, clipBehavior: clipBehavior);
}
addChildrenToScene(builder, layerOffset); addChildrenToScene(builder, layerOffset);
if (enabled) if (enabled)
builder.pop(); builder.pop();
...@@ -1176,8 +1181,10 @@ class ClipPathLayer extends ContainerLayer { ...@@ -1176,8 +1181,10 @@ class ClipPathLayer extends ContainerLayer {
enabled = !debugDisableClipLayers; enabled = !debugDisableClipLayers;
return true; return true;
}()); }());
if (enabled) if (enabled) {
builder.pushClipPath(clipPath.shift(layerOffset), clipBehavior: clipBehavior); final Path shiftedPath = layerOffset == Offset.zero ? clipPath : clipPath.shift(layerOffset);
builder.pushClipPath(shiftedPath, clipBehavior: clipBehavior);
}
addChildrenToScene(builder, layerOffset); addChildrenToScene(builder, layerOffset);
if (enabled) if (enabled)
builder.pop(); builder.pop();
...@@ -1414,7 +1421,8 @@ class ShaderMaskLayer extends ContainerLayer { ...@@ -1414,7 +1421,8 @@ class ShaderMaskLayer extends ContainerLayer {
@override @override
ui.EngineLayer addToScene(ui.SceneBuilder builder, [ Offset layerOffset = Offset.zero ]) { ui.EngineLayer addToScene(ui.SceneBuilder builder, [ Offset layerOffset = Offset.zero ]) {
builder.pushShaderMask(shader, maskRect.shift(layerOffset), blendMode); final Rect shiftedMaskRect = layerOffset == Offset.zero ? maskRect : maskRect.shift(layerOffset);
builder.pushShaderMask(shader, shiftedMaskRect, blendMode);
addChildrenToScene(builder, layerOffset); addChildrenToScene(builder, layerOffset);
builder.pop(); builder.pop();
return null; // this does not return an engine layer yet. return null; // this does not return an engine layer yet.
...@@ -1590,7 +1598,7 @@ class PhysicalModelLayer extends ContainerLayer { ...@@ -1590,7 +1598,7 @@ class PhysicalModelLayer extends ContainerLayer {
}()); }());
if (enabled) { if (enabled) {
engineLayer = builder.pushPhysicalShape( engineLayer = builder.pushPhysicalShape(
path: clipPath.shift(layerOffset), path: layerOffset == Offset.zero ? clipPath : clipPath.shift(layerOffset),
elevation: elevation, elevation: elevation,
color: color, color: color,
shadowColor: shadowColor, shadowColor: shadowColor,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment