Modified: trunk/Source/WebCore/ChangeLog (144182 => 144183)
--- trunk/Source/WebCore/ChangeLog 2013-02-27 15:11:54 UTC (rev 144182)
+++ trunk/Source/WebCore/ChangeLog 2013-02-27 15:27:21 UTC (rev 144183)
@@ -1,3 +1,19 @@
+2013-02-27 Allan Sandfeld Jensen <[email protected]>
+
+ [TexMap] Flickering after transitions on Apple HTML5 demo
+ https://bugs.webkit.org/show_bug.cgi?id=102501
+
+ Reviewed by Noam Rosenthal.
+
+ Notify about animation start after the new animation is actually commited.
+
+ * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
+ (WebCore::GraphicsLayerTextureMapper::GraphicsLayerTextureMapper):
+ (WebCore::GraphicsLayerTextureMapper::commitLayerChanges):
+ (WebCore::GraphicsLayerTextureMapper::addAnimation):
+ * platform/graphics/texmap/GraphicsLayerTextureMapper.h:
+ (GraphicsLayerTextureMapper):
+
2013-02-27 Vivek Galatage <[email protected]>
Web Inspector: Refactor AuditsPanel with AuditController as newly introduced entity
Modified: trunk/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp (144182 => 144183)
--- trunk/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp 2013-02-27 15:11:54 UTC (rev 144182)
+++ trunk/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp 2013-02-27 15:27:21 UTC (rev 144183)
@@ -56,7 +56,7 @@
, m_fixedToViewport(false)
, m_debugBorderWidth(0)
, m_contentsLayer(0)
- , m_animationStartedTimer(this, &GraphicsLayerTextureMapper::animationStartedTimerFired)
+ , m_animationStartTime(0)
{
}
@@ -537,6 +537,9 @@
if (m_changeMask & AnimationChange)
m_layer->setAnimations(m_animations);
+ if (m_changeMask & AnimationStarted)
+ client()->notifyAnimationStarted(this, m_animationStartTime);
+
if (m_changeMask & FixedToViewporChange)
m_layer->setFixedToViewport(fixedToViewport());
@@ -610,9 +613,10 @@
if (valueList.property() == AnimatedPropertyWebkitTransform)
listsMatch = validateTransformOperations(valueList, hasBigRotation) >= 0;
- m_animations.add(GraphicsLayerAnimation(keyframesName, valueList, boxSize, anim, WTF::currentTime() - timeOffset, listsMatch));
+ m_animationStartTime = WTF::currentTime() - timeOffset;
+ m_animations.add(GraphicsLayerAnimation(keyframesName, valueList, boxSize, anim, m_animationStartTime, listsMatch));
notifyChange(AnimationChange);
- m_animationStartedTimer.startOneShot(0);
+ notifyChange(AnimationStarted);
return true;
}
@@ -633,11 +637,6 @@
m_animations.remove(animationName);
}
-void GraphicsLayerTextureMapper::animationStartedTimerFired(Timer<GraphicsLayerTextureMapper>*)
-{
- client()->notifyAnimationStarted(this, /* DOM time */ WTF::currentTime());
-}
-
#if ENABLE(CSS_FILTERS)
bool GraphicsLayerTextureMapper::setFilters(const FilterOperations& filters)
{
Modified: trunk/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h (144182 => 144183)
--- trunk/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h 2013-02-27 15:11:54 UTC (rev 144182)
+++ trunk/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h 2013-02-27 15:27:21 UTC (rev 144183)
@@ -104,7 +104,6 @@
void updateBackingStoreIfNeeded();
void prepareBackingStoreIfNeeded();
bool shouldHaveBackingStore() const;
- void animationStartedTimerFired(Timer<GraphicsLayerTextureMapper>*);
// This set of flags help us defer which properties of the layer have been
// modified by the compositor, so we can know what to look for in the next flush.
@@ -143,7 +142,8 @@
DebugVisualsChange = (1L << 24),
RepaintCountChange = (1L << 25),
- FixedToViewporChange = (1L << 26)
+ FixedToViewporChange = (1L << 26),
+ AnimationStarted = (1L << 27)
};
void notifyChange(ChangeMask);
@@ -164,7 +164,7 @@
TextureMapperPlatformLayer* m_contentsLayer;
FloatRect m_needsDisplayRect;
GraphicsLayerAnimations m_animations;
- Timer<GraphicsLayerTextureMapper> m_animationStartedTimer;
+ double m_animationStartTime;
};
inline static GraphicsLayerTextureMapper* toGraphicsLayerTextureMapper(GraphicsLayer* layer)