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 {
@override
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(
textureId,
offset: shiftedRect.topLeft,
......@@ -370,7 +370,7 @@ class PlatformViewLayer extends Layer {
@override
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(
viewId,
offset: shiftedRect.topLeft,
......@@ -449,7 +449,8 @@ class PerformanceOverlayLayer extends Layer {
@override
ui.EngineLayer addToScene(ui.SceneBuilder builder, [ Offset layerOffset = Offset.zero ]) {
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.setCheckerboardRasterCacheImages(checkerboardRasterCacheImages);
builder.setCheckerboardOffscreenLayers(checkerboardOffscreenLayers);
......@@ -1018,8 +1019,10 @@ class ClipRectLayer extends ContainerLayer {
enabled = !debugDisableClipLayers;
return true;
}());
if (enabled)
builder.pushClipRect(clipRect.shift(layerOffset), clipBehavior: clipBehavior);
if (enabled) {
final Rect shiftedClipRect = layerOffset == Offset.zero ? clipRect : clipRect.shift(layerOffset);
builder.pushClipRect(shiftedClipRect, clipBehavior: clipBehavior);
}
addChildrenToScene(builder, layerOffset);
if (enabled)
builder.pop();
......@@ -1097,8 +1100,10 @@ class ClipRRectLayer extends ContainerLayer {
enabled = !debugDisableClipLayers;
return true;
}());
if (enabled)
builder.pushClipRRect(clipRRect.shift(layerOffset), clipBehavior: clipBehavior);
if (enabled) {
final RRect shiftedClipRRect = layerOffset == Offset.zero ? clipRRect : clipRRect.shift(layerOffset);
builder.pushClipRRect(shiftedClipRRect, clipBehavior: clipBehavior);
}
addChildrenToScene(builder, layerOffset);
if (enabled)
builder.pop();
......@@ -1176,8 +1181,10 @@ class ClipPathLayer extends ContainerLayer {
enabled = !debugDisableClipLayers;
return true;
}());
if (enabled)
builder.pushClipPath(clipPath.shift(layerOffset), clipBehavior: clipBehavior);
if (enabled) {
final Path shiftedPath = layerOffset == Offset.zero ? clipPath : clipPath.shift(layerOffset);
builder.pushClipPath(shiftedPath, clipBehavior: clipBehavior);
}
addChildrenToScene(builder, layerOffset);
if (enabled)
builder.pop();
......@@ -1414,7 +1421,8 @@ class ShaderMaskLayer extends ContainerLayer {
@override
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);
builder.pop();
return null; // this does not return an engine layer yet.
......@@ -1590,7 +1598,7 @@ class PhysicalModelLayer extends ContainerLayer {
}());
if (enabled) {
engineLayer = builder.pushPhysicalShape(
path: clipPath.shift(layerOffset),
path: layerOffset == Offset.zero ? clipPath : clipPath.shift(layerOffset),
elevation: elevation,
color: color,
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