Title: [144183] trunk/Source/WebCore
Revision
144183
Author
[email protected]
Date
2013-02-27 07:27:21 -0800 (Wed, 27 Feb 2013)

Log Message

[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):

Modified Paths

Diff

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)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to