Title: [175781] trunk/Source/WebCore
- Revision
- 175781
- Author
- [email protected]
- Date
- 2014-11-08 15:50:43 -0800 (Sat, 08 Nov 2014)
Log 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:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (175780 => 175781)
--- trunk/Source/WebCore/ChangeLog 2014-11-08 20:27:13 UTC (rev 175780)
+++ trunk/Source/WebCore/ChangeLog 2014-11-08 23:50:43 UTC (rev 175781)
@@ -1,3 +1,20 @@
+2014-11-08 Simon Fraser <[email protected]>
+
+ 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:
+
2014-11-08 Beth Dakin <[email protected]>
Implement action menu support for videos
Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (175780 => 175781)
--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp 2014-11-08 20:27:13 UTC (rev 175780)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp 2014-11-08 23:50:43 UTC (rev 175781)
@@ -3181,7 +3181,7 @@
replicaPosition.y() + m_anchorPoint.y() * m_size.height());
}
-void GraphicsLayerCA::propagateLayerChangeToReplicas()
+void GraphicsLayerCA::propagateLayerChangeToReplicas(ScheduleFlushOrNot scheduleFlush)
{
for (GraphicsLayer* currentLayer = this; currentLayer; currentLayer = currentLayer->parent()) {
GraphicsLayerCA& currentLayerCA = downcast<GraphicsLayerCA>(*currentLayer);
@@ -3189,7 +3189,7 @@
break;
if (currentLayerCA.replicaLayer())
- downcast<GraphicsLayerCA>(*currentLayerCA.replicaLayer()).noteLayerPropertyChanged(ReplicatedLayerChanged);
+ downcast<GraphicsLayerCA>(*currentLayerCA.replicaLayer()).noteLayerPropertyChanged(ReplicatedLayerChanged, scheduleFlush);
}
}
@@ -3390,7 +3390,7 @@
void GraphicsLayerCA::noteSublayersChanged(ScheduleFlushOrNot scheduleFlush)
{
noteLayerPropertyChanged(ChildrenChanged, scheduleFlush);
- propagateLayerChangeToReplicas();
+ propagateLayerChangeToReplicas(scheduleFlush);
}
bool GraphicsLayerCA::canThrottleLayerFlush() const
Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h (175780 => 175781)
--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h 2014-11-08 20:27:13 UTC (rev 175780)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h 2014-11-08 23:50:43 UTC (rev 175781)
@@ -350,8 +350,6 @@
void removeCloneLayers();
FloatPoint positionForCloneRootLayer() const;
- void propagateLayerChangeToReplicas();
-
// All these "update" methods will be called inside a BEGIN_BLOCK_OBJC_EXCEPTIONS/END_BLOCK_OBJC_EXCEPTIONS block.
void updateLayerNames();
void updateSublayerList(bool maxLayerDepthReached = false);
@@ -445,6 +443,8 @@
void noteSublayersChanged(ScheduleFlushOrNot = ScheduleFlush);
void noteChangesForScaleSensitiveProperties();
+ void propagateLayerChangeToReplicas(ScheduleFlushOrNot = ScheduleFlush);
+
void repaintLayerDirtyRects();
RefPtr<PlatformCALayer> m_layer; // The main layer
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes