summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2014-09-05 15:57:47 -0700
committerJohn Reck <jreck@google.com>2014-09-05 15:58:26 -0700
commitf5945a0c8bb868f978d9d0d22043a8b44464a86e (patch)
tree225f4979dc6b8e0290307194fa1ec0c3a48ddcff /core
parentc237555c6cb89c347acf13eba45b875946473501 (diff)
downloadframeworks_base-f5945a0c8bb868f978d9d0d22043a8b44464a86e.zip
frameworks_base-f5945a0c8bb868f978d9d0d22043a8b44464a86e.tar.gz
frameworks_base-f5945a0c8bb868f978d9d0d22043a8b44464a86e.tar.bz2
Disable RT-anim for AnimatorSet
Bug: 17317184 Unfortunately this will disable *all* RT animations in a scene, but we don't have more selective targetting currently Change-Id: I57e1c0ae43957f45229473bdcdaf34c05825fab7
Diffstat (limited to 'core')
-rw-r--r--core/java/android/animation/AnimatorSet.java4
-rw-r--r--core/java/android/view/RenderNodeAnimator.java7
-rw-r--r--core/jni/android_view_RenderNodeAnimator.cpp6
3 files changed, 17 insertions, 0 deletions
diff --git a/core/java/android/animation/AnimatorSet.java b/core/java/android/animation/AnimatorSet.java
index 9156eeb..7c13dbe 100644
--- a/core/java/android/animation/AnimatorSet.java
+++ b/core/java/android/animation/AnimatorSet.java
@@ -504,6 +504,10 @@ public final class AnimatorSet extends Animator {
mStarted = true;
mPaused = false;
+ for (Node node : mNodes) {
+ node.animation.setAllowRunningAsynchronously(false);
+ }
+
if (mDuration >= 0) {
// If the duration was set on this AnimatorSet, pass it along to all child animations
for (Node node : mNodes) {
diff --git a/core/java/android/view/RenderNodeAnimator.java b/core/java/android/view/RenderNodeAnimator.java
index fa4a13a..debf45d 100644
--- a/core/java/android/view/RenderNodeAnimator.java
+++ b/core/java/android/view/RenderNodeAnimator.java
@@ -453,6 +453,12 @@ public class RenderNodeAnimator extends Animator {
throw new IllegalStateException("Cannot clone this animator");
}
+ @Override
+ public void setAllowRunningAsynchronously(boolean mayRunAsync) {
+ checkMutable();
+ nSetAllowRunningAsync(mNativePtr.get(), mayRunAsync);
+ }
+
private static native long nCreateAnimator(int property, float finalValue);
private static native long nCreateCanvasPropertyFloatAnimator(
long canvasProperty, float finalValue);
@@ -466,6 +472,7 @@ public class RenderNodeAnimator extends Animator {
private static native long nGetDuration(long nativePtr);
private static native void nSetStartDelay(long nativePtr, long startDelay);
private static native void nSetInterpolator(long animPtr, long interpolatorPtr);
+ private static native void nSetAllowRunningAsync(long animPtr, boolean mayRunAsync);
private static native void nStart(long animPtr, RenderNodeAnimator finishListener);
private static native void nEnd(long animPtr);
diff --git a/core/jni/android_view_RenderNodeAnimator.cpp b/core/jni/android_view_RenderNodeAnimator.cpp
index 85c2a09..84b7913 100644
--- a/core/jni/android_view_RenderNodeAnimator.cpp
+++ b/core/jni/android_view_RenderNodeAnimator.cpp
@@ -159,6 +159,11 @@ static void setInterpolator(JNIEnv* env, jobject clazz, jlong animatorPtr, jlong
animator->setInterpolator(interpolator);
}
+static void setAllowRunningAsync(JNIEnv* env, jobject clazz, jlong animatorPtr, jboolean mayRunAsync) {
+ BaseRenderNodeAnimator* animator = reinterpret_cast<BaseRenderNodeAnimator*>(animatorPtr);
+ animator->setAllowRunningAsync(mayRunAsync);
+}
+
static void start(JNIEnv* env, jobject clazz, jlong animatorPtr, jobject finishListener) {
BaseRenderNodeAnimator* animator = reinterpret_cast<BaseRenderNodeAnimator*>(animatorPtr);
if (finishListener) {
@@ -191,6 +196,7 @@ static JNINativeMethod gMethods[] = {
{ "nGetDuration", "(J)J", (void*) getDuration },
{ "nSetStartDelay", "(JJ)V", (void*) setStartDelay },
{ "nSetInterpolator", "(JJ)V", (void*) setInterpolator },
+ { "nSetAllowRunningAsync", "(JZ)V", (void*) setAllowRunningAsync },
{ "nStart", "(JLandroid/view/RenderNodeAnimator;)V", (void*) start },
{ "nEnd", "(J)V", (void*) end },
#endif