[Webkit-unassigned] [Bug 207361] New: There's an event loop cycle between an animation finishing, and it being removed from GraphicsLayerCA

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Feb 6 15:02:21 PST 2020


https://bugs.webkit.org/show_bug.cgi?id=207361

            Bug ID: 207361
           Summary: There's an event loop cycle between an animation
                    finishing, and it being removed from GraphicsLayerCA
           Product: WebKit
           Version: Safari Technology Preview
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Animations
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: simon.fraser at apple.com
                CC: dino at apple.com

For the rendering update where an animation finishes, Document::updateAnimationsAndSendEvents() runs and animation->tick() changes the state to Finished. isRelevant() is set to false.

However. at:
  if (!animation->isRelevant() && !animation->needsTick())

needsTick() is still true, so we don't add the animation to animationsToRemove.

That results in one frame where timeline->isRunningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyTransform) returns false, but we haven't yet removed the animation from the GraphicsLayer, so GraphicsLayer::isRunningTransformAnimation() returns true. In this same frame, RenderLayerBacking::updateGeometry() has cleared the animation extent, so we're left with a GraphicsLayer that always keeps its backing store attached because it thinks it's running a transform animation with unknown extent.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20200206/12c082cc/attachment-0001.htm>


More information about the webkit-unassigned mailing list