summaryrefslogtreecommitdiffstats
path: root/WebCore/platform
diff options
context:
space:
mode:
authorNicolas Roard <nicolasroard@google.com>2011-04-07 17:31:19 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-04-07 17:31:19 -0700
commit91730d02d6bdd8a7501b9fca75ce449630ea1dcf (patch)
treea74c529338e13dff425620428675b1fcc4aeeb2a /WebCore/platform
parentd4d5a9234bd56541aaea8fba0d0b760a1f116084 (diff)
parenta6e37cd4911df717eef13fa5bcc484617e2cd7b9 (diff)
downloadexternal_webkit-91730d02d6bdd8a7501b9fca75ce449630ea1dcf.zip
external_webkit-91730d02d6bdd8a7501b9fca75ce449630ea1dcf.tar.gz
external_webkit-91730d02d6bdd8a7501b9fca75ce449630ea1dcf.tar.bz2
am a6e37cd4: am 15692f0c: Merge "Fix regression for superpudu animations" into honeycomb-mr1
* commit 'a6e37cd4911df717eef13fa5bcc484617e2cd7b9': Fix regression for superpudu animations
Diffstat (limited to 'WebCore/platform')
-rw-r--r--WebCore/platform/graphics/android/AndroidAnimation.cpp15
-rw-r--r--WebCore/platform/graphics/android/AndroidAnimation.h1
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 {