Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d1bb2bd1b7a474e08ef8fb7c17d209e96c781a6f https://github.com/WebKit/WebKit/commit/d1bb2bd1b7a474e08ef8fb7c17d209e96c781a6f Author: Antoine Quint <grao...@webkit.org> Date: 2024-05-06 (Mon, 06 May 2024)
Changed paths: A LayoutTests/webanimations/accelerated-animation-removed-permanently-when-forward-filling-expected.txt A LayoutTests/webanimations/accelerated-animation-removed-permanently-when-forward-filling.html M Source/WebCore/animation/KeyframeEffect.cpp Log Message: ----------- [view-transitions] https://simple-set-demos.glitch.me/dust-no-raf/ flickers more as animation is re-ran https://bugs.webkit.org/show_bug.cgi?id=273649 rdar://127458540 Reviewed by Dean Jackson. If an effect targeting an accelerated CSS property enters a phase [0] other than "active", for instance when it's forward-filling, `KeyframeEffect::updateAcceleratedActions()` will enqueue a `Stop` accelerated action for that animation and thus remove its matching accelerated animation on the next frame. However, if an element is targeted by multiple animations for the same accelerated CSS property, `KeyframeEffect::applyPendingAcceleratedActionsOrUpdateTimingProperties()` will process an `UpdateProperties` accelerated action for all effects in the stack to ensure that they are indeed running. In the case of this demo, there are three forward-filling animations applied to the same element. A bottom-most one targeting `transform`, then two animations targeting `opacity`. The first two animations end early but the third animation runs longer and it is when that animation is the sole "active" animation that we enter a state where the two mechanisms described above will intermittently remove the forward-filling `opacity` animation and then re-start it in the next frame. This yields the visible flickering effect. We now check that an animation is in the "active" phase before restarting it to ensure it is in the right state when processing a keyframe effect stack. [0] https://drafts.csswg.org/web-animations-1/#animation-effect-phases-and-states * LayoutTests/webanimations/accelerated-animation-removed-permanently-when-forward-filling-expected.txt: Added. * LayoutTests/webanimations/accelerated-animation-removed-permanently-when-forward-filling.html: Added. * Source/WebCore/animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::applyPendingAcceleratedActionsOrUpdateTimingProperties): Canonical link: https://commits.webkit.org/278434@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