summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/android/AndroidAnimation.cpp
diff options
context:
space:
mode:
authorNicolas Roard <nicolasroard@google.com>2011-04-07 17:25:49 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-04-07 17:25:49 -0700
commit15692f0cb85c86ff494b94d4e61ad0757f5238b4 (patch)
tree1189d8a17ecedd38411358ea57ca3d23968e1400 /WebCore/platform/graphics/android/AndroidAnimation.cpp
parentb6ac908669555fedfaf5dc648367d4ad459fc53e (diff)
parentdb110d3dd9014246922c7d44d485928cc2ea2692 (diff)
downloadexternal_webkit-15692f0cb85c86ff494b94d4e61ad0757f5238b4.zip
external_webkit-15692f0cb85c86ff494b94d4e61ad0757f5238b4.tar.gz
external_webkit-15692f0cb85c86ff494b94d4e61ad0757f5238b4.tar.bz2
Merge "Fix regression for superpudu animations" into honeycomb-mr1
Diffstat (limited to 'WebCore/platform/graphics/android/AndroidAnimation.cpp')
-rw-r--r--WebCore/platform/graphics/android/AndroidAnimation.cpp15
1 files changed, 13 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)"