mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Scheduling profiler: Canvas views clip by default (#22100)
This commit is contained in:
+1
@@ -118,6 +118,7 @@ export class SnapshotsView extends View {
|
||||
const visibleArea = this.visibleArea;
|
||||
|
||||
// Prevent snapshot from visibly overflowing its container when clipped.
|
||||
// View clips by default, but since this view may draw async (on Image load) we re-clip.
|
||||
const shouldClip = !rectEqualToRect(imageRect, visibleArea);
|
||||
if (shouldClip) {
|
||||
const clippedRect = intersectionOfRects(imageRect, visibleArea);
|
||||
|
||||
-13
@@ -168,18 +168,6 @@ export class SuspenseEventsView extends View {
|
||||
return; // Not in view
|
||||
}
|
||||
|
||||
const drawableRect = intersectionOfRects(suspenseRect, rect);
|
||||
|
||||
// Clip diamonds so they don't overflow if the view has been resized (smaller).
|
||||
const region = new Path2D();
|
||||
region.rect(
|
||||
drawableRect.origin.x,
|
||||
drawableRect.origin.y,
|
||||
drawableRect.size.width,
|
||||
drawableRect.size.height,
|
||||
);
|
||||
context.save();
|
||||
context.clip(region);
|
||||
context.beginPath();
|
||||
context.fillStyle = fillStyle;
|
||||
context.moveTo(xStart, y - halfSize);
|
||||
@@ -187,7 +175,6 @@ export class SuspenseEventsView extends View {
|
||||
context.lineTo(xStart, y + halfSize);
|
||||
context.lineTo(xStart - halfSize, y);
|
||||
context.fill();
|
||||
context.restore();
|
||||
} else {
|
||||
const xStop = timestampToPosition(
|
||||
timestamp + duration,
|
||||
|
||||
@@ -199,7 +199,24 @@ export class View {
|
||||
this.layoutSubviews();
|
||||
if (this._needsDisplay) this._needsDisplay = false;
|
||||
if (this._subviewsNeedDisplay) this._subviewsNeedDisplay = false;
|
||||
|
||||
// Clip anything drawn by the view to prevent it from overflowing its visible area.
|
||||
const visibleArea = this.visibleArea;
|
||||
const region = new Path2D();
|
||||
region.rect(
|
||||
visibleArea.origin.x,
|
||||
visibleArea.origin.y,
|
||||
visibleArea.size.width,
|
||||
visibleArea.size.height,
|
||||
);
|
||||
context.save();
|
||||
context.clip(region);
|
||||
context.beginPath();
|
||||
|
||||
this.draw(context, viewRefs);
|
||||
|
||||
// Stop clipping
|
||||
context.restore();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user