Changeset 175781 in webkit


Ignore:
Timestamp:
Nov 8, 2014 3:50:43 PM (9 years ago)
Author:
Simon Fraser
Message:

Don't try to schedule a GraphicsLayer flush when propagating changes to replicas inside a flush
https://bugs.webkit.org/show_bug.cgi?id=138532

Reviewed by Dan Bernstein.

When changing masks on replica layers with certain layer configurations,
it was possible to hit an assertion that a flush was being scheduled when already
flushing, via propagateLayerChangeToReplicas(). Fix by passing the scheduleFlush
flag along.

Not testable with current GraphicsLayer configurations.

  • platform/graphics/ca/GraphicsLayerCA.cpp:
  • platform/graphics/ca/GraphicsLayerCA.h:
Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r175779 r175781  
     12014-11-08  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Don't try to schedule a GraphicsLayer flush when propagating changes to replicas inside a flush
     4        https://bugs.webkit.org/show_bug.cgi?id=138532
     5
     6        Reviewed by Dan Bernstein.
     7
     8        When changing masks on replica layers with certain layer configurations,
     9        it was possible to hit an assertion that a flush was being scheduled when already
     10        flushing, via propagateLayerChangeToReplicas(). Fix by passing the scheduleFlush
     11        flag along.
     12       
     13        Not testable with current GraphicsLayer configurations.
     14
     15        * platform/graphics/ca/GraphicsLayerCA.cpp:
     16        * platform/graphics/ca/GraphicsLayerCA.h:
     17
    1182014-11-08  Beth Dakin  <bdakin@apple.com>
    219
  • trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp

    r175716 r175781  
    31823182}
    31833183
    3184 void GraphicsLayerCA::propagateLayerChangeToReplicas()
     3184void GraphicsLayerCA::propagateLayerChangeToReplicas(ScheduleFlushOrNot scheduleFlush)
    31853185{
    31863186    for (GraphicsLayer* currentLayer = this; currentLayer; currentLayer = currentLayer->parent()) {
     
    31903190
    31913191        if (currentLayerCA.replicaLayer())
    3192             downcast<GraphicsLayerCA>(*currentLayerCA.replicaLayer()).noteLayerPropertyChanged(ReplicatedLayerChanged);
     3192            downcast<GraphicsLayerCA>(*currentLayerCA.replicaLayer()).noteLayerPropertyChanged(ReplicatedLayerChanged, scheduleFlush);
    31933193    }
    31943194}
     
    33913391{
    33923392    noteLayerPropertyChanged(ChildrenChanged, scheduleFlush);
    3393     propagateLayerChangeToReplicas();
     3393    propagateLayerChangeToReplicas(scheduleFlush);
    33943394}
    33953395
  • trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h

    r175716 r175781  
    350350    void removeCloneLayers();
    351351    FloatPoint positionForCloneRootLayer() const;
    352    
    353     void propagateLayerChangeToReplicas();
    354352   
    355353    // All these "update" methods will be called inside a BEGIN_BLOCK_OBJC_EXCEPTIONS/END_BLOCK_OBJC_EXCEPTIONS block.
     
    446444    void noteChangesForScaleSensitiveProperties();
    447445
     446    void propagateLayerChangeToReplicas(ScheduleFlushOrNot = ScheduleFlush);
     447
    448448    void repaintLayerDirtyRects();
    449449
Note: See TracChangeset for help on using the changeset viewer.