summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/widget/WaveView.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/core/java/com/android/internal/widget/WaveView.java b/core/java/com/android/internal/widget/WaveView.java
index f91d3d6a5c2b..81633b12f286 100644
--- a/core/java/com/android/internal/widget/WaveView.java
+++ b/core/java/com/android/internal/widget/WaveView.java
@@ -269,7 +269,7 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen
break;
case STATE_ATTEMPTING:
- if (DBG) Log.v(TAG, "State ATTEMPTING");
+ if (DBG) Log.v(TAG, "State ATTEMPTING (fingerDown = " + fingerDown + ")");
//TweenMax.to(unlockHalo, 0.4, { x:mouseX, y:mouseY, scaleX:1, scaleY:1,
// alpha: 1, ease:Quint.easeOut });
if (dragDistance > mSnapRadius) {
@@ -282,6 +282,7 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen
mUnlockHalo.addAnimTo(0, 0, "scaleY", 1.0f, true);
mUnlockHalo.addAnimTo(0, 0, "alpha", 1.0f, true);
} else {
+ if (DBG) Log.v(TAG, "up detected, moving to STATE_UNLOCK_ATTEMPT");
mLockState = STATE_UNLOCK_ATTEMPT;
}
} else {
@@ -480,9 +481,16 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen
break;
case MotionEvent.ACTION_UP:
+ if (DBG) Log.v(TAG, "ACTION_UP");
mFingerDown = false;
postDelayed(mLockTimerActions, RESET_TIMEOUT);
setGrabbedState(OnTriggerListener.NO_HANDLE);
+ // Normally the state machine is driven by user interaction causing redraws.
+ // However, when there's no more user interaction and no running animations,
+ // the state machine stops advancing because onDraw() never gets called.
+ // The following ensures we advance to the next state in this case,
+ // either STATE_UNLOCK_ATTEMPT or STATE_RESET_LOCK.
+ waveUpdateFrame(mMouseX, mMouseY, mFingerDown);
handled = true;
break;