Changeset 239268 in webkit


Ignore:
Timestamp:
Dec 17, 2018 9:10:44 AM (5 years ago)
Author:
Simon Fraser
Message:

REGRESSION (r233268): Elements animated in from offscreen sometimes don't display
https://bugs.webkit.org/show_bug.cgi?id=192725
rdar://problem/46011418

Reviewed by Antoine Quint.

Source/WebCore:

There were two problems with backing store attachment and animation.

First, animations are an input into the "backing store attached" logic, so when they change
we should set the CoverageRectChanged bit on GraphicsLayerCA.

Secondly, when an ancestor has unknown animation extent, all its descendants need to
get backing store, so we need to set childCommitState.ancestorWithTransformAnimationIntersectsCoverageRect when
the current layer has no animation extent.

Tests: compositing/backing/animate-into-view-with-descendant.html

compositing/backing/animate-into-view.html

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::addAnimation):
(WebCore::GraphicsLayerCA::removeAnimation):
(WebCore::GraphicsLayerCA::recursiveCommitChanges):

LayoutTests:

  • compositing/backing/animate-into-view-expected.txt: Added.
  • compositing/backing/animate-into-view-with-descendant-expected.txt: Added.
  • compositing/backing/animate-into-view-with-descendant.html: Added.
  • compositing/backing/animate-into-view.html: Added.
  • platform/ios/compositing/backing/animate-into-view-expected.txt: Added.
  • platform/ios/compositing/backing/animate-into-view-with-descendant-expected.txt: Added.
Location:
trunk
Files:
6 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r239265 r239268  
     12018-12-17  Simon Fraser  <simon.fraser@apple.com>
     2
     3        REGRESSION (r233268): Elements animated in from offscreen sometimes don't display
     4        https://bugs.webkit.org/show_bug.cgi?id=192725
     5        rdar://problem/46011418
     6
     7        Reviewed by Antoine Quint.
     8
     9        * compositing/backing/animate-into-view-expected.txt: Added.
     10        * compositing/backing/animate-into-view-with-descendant-expected.txt: Added.
     11        * compositing/backing/animate-into-view-with-descendant.html: Added.
     12        * compositing/backing/animate-into-view.html: Added.
     13        * platform/ios/compositing/backing/animate-into-view-expected.txt: Added.
     14        * platform/ios/compositing/backing/animate-into-view-with-descendant-expected.txt: Added.
     15
    1162018-12-17  Ms2ger  <Ms2ger@igalia.com>
    217
  • trunk/Source/WebCore/ChangeLog

    r239267 r239268  
     12018-12-17  Simon Fraser  <simon.fraser@apple.com>
     2
     3        REGRESSION (r233268): Elements animated in from offscreen sometimes don't display
     4        https://bugs.webkit.org/show_bug.cgi?id=192725
     5        rdar://problem/46011418
     6
     7        Reviewed by Antoine Quint.
     8
     9        There were two problems with backing store attachment and animation.
     10       
     11        First, animations are an input into the "backing store attached" logic, so when they change
     12        we should set the CoverageRectChanged bit on GraphicsLayerCA.
     13       
     14        Secondly, when an ancestor has unknown animation extent, all its descendants need to
     15        get backing store, so we need to set childCommitState.ancestorWithTransformAnimationIntersectsCoverageRect when
     16        the current layer has no animation extent.
     17
     18        Tests: compositing/backing/animate-into-view-with-descendant.html
     19               compositing/backing/animate-into-view.html
     20
     21        * platform/graphics/ca/GraphicsLayerCA.cpp:
     22        (WebCore::GraphicsLayerCA::addAnimation):
     23        (WebCore::GraphicsLayerCA::removeAnimation):
     24        (WebCore::GraphicsLayerCA::recursiveCommitChanges):
     25
    1262018-12-17  Zalan Bujtas  <zalan@apple.com>
    227
  • trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp

    r239266 r239268  
    10401040
    10411041    if (createdAnimations)
    1042         noteLayerPropertyChanged(AnimationChanged);
     1042        noteLayerPropertyChanged(AnimationChanged | CoverageRectChanged);
    10431043
    10441044    return createdAnimations;
     
    10731073
    10741074    addProcessingActionForAnimation(animationName, AnimationProcessingAction(Remove));
    1075     noteLayerPropertyChanged(AnimationChanged);
     1075    noteLayerPropertyChanged(AnimationChanged | CoverageRectChanged);
    10761076}
    10771077
     
    15781578    if (nowRunningTransformAnimation) {
    15791579        childCommitState.ancestorHasTransformAnimation = true;
    1580         if (m_intersectsCoverageRect)
     1580        if (m_intersectsCoverageRect || !animationExtent())
    15811581            childCommitState.ancestorWithTransformAnimationIntersectsCoverageRect = true;
    15821582        affectedByTransformAnimation = true;
Note: See TracChangeset for help on using the changeset viewer.