Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ec19ea6f19878f13a1774a48692079c05ea2e499
      
https://github.com/WebKit/WebKit/commit/ec19ea6f19878f13a1774a48692079c05ea2e499
  Author: Said Abou-Hallawa <s...@apple.com>
  Date:   2025-09-08 (Mon, 08 Sep 2025)

  Changed paths:
    A LayoutTests/fast/canvas/canvas-reset-layer-filter-no-end-expected.txt
    A LayoutTests/fast/canvas/canvas-reset-layer-filter-no-end.html
    M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp

  Log Message:
  -----------
  ASSERT fires when calling CanvasRenderingContext2D::reset() after beginning a 
layer with a filter
https://bugs.webkit.org/show_bug.cgi?id=298501
rdar://160017871

Reviewed by Simon Fraser.

Unwind the CanvasRenderingContext2D state stack in the right order. A state has
to be removed from the stack first then the drawing context has to be restored.

Deleting a state calls the destructor of CanvasLayerContextSwitcher if a layer
has begun. This calls TransparencyLayerContextSwitcher::endDrawSourceImage()
which calls GraphicsContext::endTransparencyLayer(). This calls restore() whose
save() was called when the layer transparency layer was begun.

* LayoutTests/fast/canvas/canvas-reset-layer-filter-no-end-expected.txt: Added.
* LayoutTests/fast/canvas/canvas-reset-layer-filter-no-end.html: Added.
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::unwindStateStack):
(WebCore::CanvasRenderingContext2DBase::reset):

Canonical link: https://commits.webkit.org/299695@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to