am 9a1b4c29: Merge "Move ripple to end state on jump when hardware exit is pending" into lmp-mr1-dev

* commit '9a1b4c29672f7b7a8cfdeedfc2421854439c0af0':
  Move ripple to end state on jump when hardware exit is pending
diff --git a/graphics/java/android/graphics/drawable/Ripple.java b/graphics/java/android/graphics/drawable/Ripple.java
index a3a220c..ba1e86c 100644
--- a/graphics/java/android/graphics/drawable/Ripple.java
+++ b/graphics/java/android/graphics/drawable/Ripple.java
@@ -214,7 +214,7 @@
         final boolean canUseHardware = c.isHardwareAccelerated();
         if (mCanUseHardware != canUseHardware && mCanUseHardware) {
             // We've switched from hardware to non-hardware mode. Panic.
-            cancelHardwareAnimations(true);
+            cancelHardwareAnimations(false);
         }
         mCanUseHardware = canUseHardware;
 
@@ -493,7 +493,7 @@
     public void cancel() {
         mCanceled = true;
         cancelSoftwareAnimations();
-        cancelHardwareAnimations(true);
+        cancelHardwareAnimations(false);
         mCanceled = false;
     }
 
@@ -522,15 +522,30 @@
     /**
      * Cancels any running hardware animations.
      */
-    private void cancelHardwareAnimations(boolean cancelPending) {
+    private void cancelHardwareAnimations(boolean jumpToEnd) {
         final ArrayList<RenderNodeAnimator> runningAnimations = mRunningAnimations;
         final int N = runningAnimations.size();
         for (int i = 0; i < N; i++) {
-            runningAnimations.get(i).cancel();
+            if (jumpToEnd) {
+                runningAnimations.get(i).end();
+            } else {
+                runningAnimations.get(i).cancel();
+            }
         }
         runningAnimations.clear();
 
-        mHasPendingHardwareExit = false;
+        if (mHasPendingHardwareExit) {
+            // If we had a pending hardware exit, jump to the end state.
+            mHasPendingHardwareExit = false;
+
+            if (jumpToEnd) {
+                mOpacity = 0;
+                mTweenX = 1;
+                mTweenY = 1;
+                mTweenRadius = 1;
+            }
+        }
+
         mHardwareAnimating = false;
     }
 
diff --git a/graphics/java/android/graphics/drawable/RippleBackground.java b/graphics/java/android/graphics/drawable/RippleBackground.java
index 665d736..cc42aac 100644
--- a/graphics/java/android/graphics/drawable/RippleBackground.java
+++ b/graphics/java/android/graphics/drawable/RippleBackground.java
@@ -148,7 +148,7 @@
         final boolean canUseHardware = c.isHardwareAccelerated();
         if (mCanUseHardware != canUseHardware && mCanUseHardware) {
             // We've switched from hardware to non-hardware mode. Panic.
-            cancelHardwareAnimations(true);
+            cancelHardwareAnimations(false);
         }
         mCanUseHardware = canUseHardware;
 
@@ -399,7 +399,7 @@
      */
     public void cancel() {
         cancelSoftwareAnimations();
-        cancelHardwareAnimations(true);
+        cancelHardwareAnimations(false);
     }
 
     private void cancelSoftwareAnimations() {
@@ -412,15 +412,27 @@
     /**
      * Cancels any running hardware animations.
      */
-    private void cancelHardwareAnimations(boolean cancelPending) {
+    private void cancelHardwareAnimations(boolean jumpToEnd) {
         final ArrayList<RenderNodeAnimator> runningAnimations = mRunningAnimations;
         final int N = runningAnimations.size();
         for (int i = 0; i < N; i++) {
-            runningAnimations.get(i).cancel();
+            if (jumpToEnd) {
+                runningAnimations.get(i).end();
+            } else {
+                runningAnimations.get(i).cancel();
+            }
         }
         runningAnimations.clear();
 
-        mHasPendingHardwareExit = false;
+        if (mHasPendingHardwareExit) {
+            // If we had a pending hardware exit, jump to the end state.
+            mHasPendingHardwareExit = false;
+
+            if (jumpToEnd) {
+                mOuterOpacity = 0;
+            }
+        }
+
         mHardwareAnimating = false;
     }