Title: [149691] trunk/Source/WebCore
- Revision
- 149691
- Author
- [email protected]
- Date
- 2013-05-07 14:12:58 -0700 (Tue, 07 May 2013)
Log Message
Still possible to fire paint-related LayoutMilestones before CA has committed the
changes
https://bugs.webkit.org/show_bug.cgi?id=115753
-and corresponding-
<rdar://problem/13822315>
Reviewed by Simon Fraser.
To ensure we wait for the CA commit, we should wait until the end of the runloop
with a zero-delay timer.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::RenderLayerCompositor):
(WebCore::RenderLayerCompositor::flushPendingLayerChanges):
(WebCore::RenderLayerCompositor::paintRelatedMilestonesTimerFired):
(WebCore):
* rendering/RenderLayerCompositor.h:
(RenderLayerCompositor):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (149690 => 149691)
--- trunk/Source/WebCore/ChangeLog 2013-05-07 21:09:48 UTC (rev 149690)
+++ trunk/Source/WebCore/ChangeLog 2013-05-07 21:12:58 UTC (rev 149691)
@@ -1,3 +1,24 @@
+2013-05-07 Beth Dakin <[email protected]>
+
+ Still possible to fire paint-related LayoutMilestones before CA has committed the
+ changes
+ https://bugs.webkit.org/show_bug.cgi?id=115753
+ -and corresponding-
+ <rdar://problem/13822315>
+
+ Reviewed by Simon Fraser.
+
+ To ensure we wait for the CA commit, we should wait until the end of the runloop
+ with a zero-delay timer.
+
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::RenderLayerCompositor):
+ (WebCore::RenderLayerCompositor::flushPendingLayerChanges):
+ (WebCore::RenderLayerCompositor::paintRelatedMilestonesTimerFired):
+ (WebCore):
+ * rendering/RenderLayerCompositor.h:
+ (RenderLayerCompositor):
+
2013-05-07 Chris Fleizach <[email protected]>
Bug 115694 - Fix bad cast to RenderHTMLCanvas
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (149690 => 149691)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2013-05-07 21:09:48 UTC (rev 149690)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2013-05-07 21:12:58 UTC (rev 149691)
@@ -214,6 +214,7 @@
, m_layerFlushThrottlingEnabled(false)
, m_layerFlushThrottlingTemporarilyDisabledForInteraction(false)
, m_hasPendingLayerFlush(false)
+ , m_paintRelatedMilestonesTimer(this, &RenderLayerCompositor::paintRelatedMilestonesTimerFired)
#if !LOG_DISABLED
, m_rootLayerUpdateCount(0)
, m_obligateCompositedLayerCount(0)
@@ -372,8 +373,8 @@
ASSERT(m_flushingLayers);
m_flushingLayers = false;
- if (frameView)
- frameView->firePaintRelatedMilestones();
+ if (!m_paintRelatedMilestonesTimer.isActive())
+ m_paintRelatedMilestonesTimer.startOneShot(0);
if (!m_viewportConstrainedLayersNeedingUpdate.isEmpty()) {
HashSet<RenderLayer*>::const_iterator end = m_viewportConstrainedLayersNeedingUpdate.end();
@@ -3188,6 +3189,13 @@
scheduleLayerFlushNow();
}
+void RenderLayerCompositor::paintRelatedMilestonesTimerFired(Timer<RenderLayerCompositor>*)
+{
+ FrameView* frameView = m_renderView ? m_renderView->frameView() : 0;
+ if (frameView)
+ frameView->firePaintRelatedMilestones();
+}
+
} // namespace WebCore
#endif // USE(ACCELERATED_COMPOSITING)
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.h (149690 => 149691)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.h 2013-05-07 21:09:48 UTC (rev 149690)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.h 2013-05-07 21:12:58 UTC (rev 149691)
@@ -385,6 +385,8 @@
void startLayerFlushTimerIfNeeded();
void layerFlushTimerFired(Timer<RenderLayerCompositor>*);
+ void paintRelatedMilestonesTimerFired(Timer<RenderLayerCompositor>*);
+
#if !LOG_DISABLED
const char* logReasonsForCompositing(const RenderLayer*);
void logLayerInfo(const RenderLayer*, int depth);
@@ -450,6 +452,8 @@
bool m_layerFlushThrottlingTemporarilyDisabledForInteraction;
bool m_hasPendingLayerFlush;
+ Timer<RenderLayerCompositor> m_paintRelatedMilestonesTimer;
+
#if !LOG_DISABLED
int m_rootLayerUpdateCount;
int m_obligateCompositedLayerCount; // count of layer that have to be composited.
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes