diff options
Diffstat (limited to 'WebCore/platform/graphics')
-rw-r--r-- | WebCore/platform/graphics/android/AndroidAnimation.cpp | 15 | ||||
-rw-r--r-- | WebCore/platform/graphics/android/AndroidAnimation.h | 1 |
2 files changed, 14 insertions, 2 deletions
diff --git a/WebCore/platform/graphics/android/AndroidAnimation.cpp b/WebCore/platform/graphics/android/AndroidAnimation.cpp index be9e0ee..1eb7f39 100644 --- a/WebCore/platform/graphics/android/AndroidAnimation.cpp +++ b/WebCore/platform/graphics/android/AndroidAnimation.cpp @@ -66,6 +66,7 @@ AndroidAnimation::AndroidAnimation(AnimatedPropertyID type, , m_timingFunction(animation->timingFunction()) , m_type(type) , m_operations(operations) + , m_originalLayer(0) { ASSERT(m_timingFunction); @@ -84,6 +85,7 @@ AndroidAnimation::AndroidAnimation(AndroidAnimation* anim) , m_timingFunction(anim->m_timingFunction) , m_type(anim->m_type) , m_operations(anim->m_operations) + , m_originalLayer(0) { gDebugAndroidAnimationInstances++; } @@ -232,9 +234,13 @@ bool AndroidOpacityAnimation::evaluate(LayerAndroid* layer, double time) if (progress >= 1) { m_finished = true; - return false; + if (layer != m_originalLayer) + return false; } + if (!m_originalLayer) + m_originalLayer = layer; + // First, we need to get the from and to values int from, to; @@ -258,6 +264,7 @@ bool AndroidOpacityAnimation::evaluate(LayerAndroid* layer, double time) layer->setOpacity(value); XLOG("AndroidOpacityAnimation::evaluate(%p, %p, %.2f) value=%.6f", this, layer, time, value); + return true; } @@ -300,9 +307,13 @@ bool AndroidTransformAnimation::evaluate(LayerAndroid* layer, double time) if (progress >= 1) { m_finished = true; - return false; + if (layer != m_originalLayer) + return false; } + if (!m_originalLayer) + m_originalLayer = layer; + IntSize size(layer->getSize().width(), layer->getSize().height()); TransformationMatrix matrix; XLOG("Evaluate transforms animations, %d operations, progress %.2f for layer %d (%d, %d)" diff --git a/WebCore/platform/graphics/android/AndroidAnimation.h b/WebCore/platform/graphics/android/AndroidAnimation.h index 602abe2..6f1410d 100644 --- a/WebCore/platform/graphics/android/AndroidAnimation.h +++ b/WebCore/platform/graphics/android/AndroidAnimation.h @@ -66,6 +66,7 @@ class AndroidAnimation : public RefCounted<AndroidAnimation> { String m_name; AnimatedPropertyID m_type; KeyframeValueList* m_operations; + LayerAndroid* m_originalLayer; }; class AndroidOpacityAnimation : public AndroidAnimation { |