Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 5d58ef776121e63743ef363b09b6158adb97dbf0
https://github.com/WebKit/WebKit/commit/5d58ef776121e63743ef363b09b6158adb97dbf0
Author: Said Abou-Hallawa <[email protected]>
Date: 2024-06-17 (Mon, 17 Jun 2024)
Changed paths:
M LayoutTests/fast/canvas/canvas-filter-bounding-rect.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/html/canvas/CanvasFilterTargetSwitcher.cpp
M Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp
M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp
M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h
M Source/WebCore/html/canvas/PaintRenderingContext2D.h
Log Message:
-----------
[WPE][GTK] REGRESSION(279912@main):
fast/canvas/canvas-filter-repaint-rect.html fails
https://bugs.webkit.org/show_bug.cgi?id=275353
rdar://129719858
Reviewed by Kimmo Kinnunen.
Before 279912@main, existingDrawingContext() was returning the destination
context
of the canvas if it exists.
After 279912@main, existingDrawingContext() returns drawingContext() which may
return the FilterTargetSwitcher context. This causes a problem when this
function
is called from RenderHTMLCanvas::requiresLayer() via isAccelerated().
Usually the canvas is backed by an accelerated ImageBuffer. But the filter
target
switcher is backed by un-accelerated ImageBuffer. So returning the RenderingMode
of the target switcher will give the wrong answer to requiresLayer().
The fix is to restore the old behavior of drawingContext() back by returning the
canvas destination context and creating it if it does not exist. Also add
effectiveDrawingContext() which returns the FilterTargetSwitcher if it is
active.
Otherwise it returns drawingContext().
* LayoutTests/fast/canvas/canvas-filter-bounding-rect.html:
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/html/canvas/CanvasFilterTargetSwitcher.cpp:
(WebCore::CanvasFilterTargetSwitcher::create):
(WebCore::CanvasFilterTargetSwitcher::~CanvasFilterTargetSwitcher):
* Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::createFilter const):
(WebCore::CanvasRenderingContext2D::drawFocusIfNeededInternal):
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::setStrokeStyle):
(WebCore::CanvasRenderingContext2DBase::setFillStyle):
(WebCore::CanvasRenderingContext2DBase::setLineWidth):
(WebCore::CanvasRenderingContext2DBase::setLineCap):
(WebCore::CanvasRenderingContext2DBase::setLineJoin):
(WebCore::CanvasRenderingContext2DBase::setMiterLimit):
(WebCore::CanvasRenderingContext2DBase::applyLineDash const):
(WebCore::CanvasRenderingContext2DBase::setGlobalAlpha):
(WebCore::CanvasRenderingContext2DBase::setGlobalCompositeOperation):
(WebCore::CanvasRenderingContext2DBase::scale):
(WebCore::CanvasRenderingContext2DBase::rotate):
(WebCore::CanvasRenderingContext2DBase::translate):
(WebCore::CanvasRenderingContext2DBase::transform):
(WebCore::CanvasRenderingContext2DBase::setTransform):
(WebCore::CanvasRenderingContext2DBase::resetTransform):
(WebCore::CanvasRenderingContext2DBase::fillInternal):
(WebCore::CanvasRenderingContext2DBase::strokeInternal):
(WebCore::CanvasRenderingContext2DBase::clipInternal):
(WebCore::CanvasRenderingContext2DBase::beginCompositeLayer):
(WebCore::CanvasRenderingContext2DBase::endCompositeLayer):
(WebCore::CanvasRenderingContext2DBase::isPointInPathInternal):
(WebCore::CanvasRenderingContext2DBase::isPointInStrokeInternal):
(WebCore::CanvasRenderingContext2DBase::clearRect):
(WebCore::CanvasRenderingContext2DBase::fillRect):
(WebCore::CanvasRenderingContext2DBase::strokeRect):
(WebCore::CanvasRenderingContext2DBase::applyShadow):
(WebCore::CanvasRenderingContext2DBase::drawImage):
(WebCore::CanvasRenderingContext2DBase::clearCanvas):
(WebCore::CanvasRenderingContext2DBase::compositeBuffer):
(WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):
(WebCore::CanvasRenderingContext2DBase::didDraw):
(WebCore::CanvasRenderingContext2DBase::drawingContext const):
(WebCore::CanvasRenderingContext2DBase::effectiveDrawingContext const):
(WebCore::CanvasRenderingContext2DBase::setImageSmoothingQuality):
(WebCore::CanvasRenderingContext2DBase::setImageSmoothingEnabled):
(WebCore::CanvasRenderingContext2DBase::canDrawText):
(WebCore::CanvasRenderingContext2DBase::drawTextUnchecked):
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h:
* Source/WebCore/html/canvas/PaintRenderingContext2D.h:
Canonical link: https://commits.webkit.org/280091@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes