summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorWink Saville <wink@google.com>2013-04-16 20:32:59 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-04-16 20:33:00 +0000
commitc6f2d17a0a6f9b172ff91247db12bc39a601f81c (patch)
treef9f41c247e77f32fec4aef1e72c68c2bc429b124 /core
parent37f58dccecd778f5af1f1f1db492c75ec5fcabd6 (diff)
parent03812c7894bd51ffc27aece5933791e4a00d679b (diff)
downloadframeworks_base-c6f2d17a0a6f9b172ff91247db12bc39a601f81c.zip
frameworks_base-c6f2d17a0a6f9b172ff91247db12bc39a601f81c.tar.gz
frameworks_base-c6f2d17a0a6f9b172ff91247db12bc39a601f81c.tar.bz2
Merge "Add mHasQuit to fix an NPE in StateMachine." into jb-mr2-dev
Diffstat (limited to 'core')
-rw-r--r--core/java/com/android/internal/util/StateMachine.java50
1 files changed, 28 insertions, 22 deletions
diff --git a/core/java/com/android/internal/util/StateMachine.java b/core/java/com/android/internal/util/StateMachine.java
index dd57ef4..d26f79e 100644
--- a/core/java/com/android/internal/util/StateMachine.java
+++ b/core/java/com/android/internal/util/StateMachine.java
@@ -672,6 +672,9 @@ public class StateMachine {
private static class SmHandler extends Handler {
+ /** true if StateMachine has quit */
+ private boolean mHasQuit = false;
+
/** The debug flag */
private boolean mDbg = false;
@@ -773,29 +776,31 @@ public class StateMachine {
*/
@Override
public final void handleMessage(Message msg) {
- if (mDbg) mSm.log("handleMessage: E msg.what=" + msg.what);
-
- /** Save the current message */
- mMsg = msg;
-
- /** State that processed the message */
- State msgProcessedState = null;
- if (mIsConstructionCompleted) {
- /** Normal path */
- msgProcessedState = processMsg(msg);
- } else if (!mIsConstructionCompleted && (mMsg.what == SM_INIT_CMD)
- && (mMsg.obj == mSmHandlerObj)) {
- /** Initial one time path. */
- mIsConstructionCompleted = true;
- invokeEnterMethods(0);
- } else {
- throw new RuntimeException("StateMachine.handleMessage: "
- + "The start method not called, received msg: " + msg);
- }
- performTransitions(msgProcessedState, msg);
+ if (!mHasQuit) {
+ if (mDbg) mSm.log("handleMessage: E msg.what=" + msg.what);
+
+ /** Save the current message */
+ mMsg = msg;
+
+ /** State that processed the message */
+ State msgProcessedState = null;
+ if (mIsConstructionCompleted) {
+ /** Normal path */
+ msgProcessedState = processMsg(msg);
+ } else if (!mIsConstructionCompleted && (mMsg.what == SM_INIT_CMD)
+ && (mMsg.obj == mSmHandlerObj)) {
+ /** Initial one time path. */
+ mIsConstructionCompleted = true;
+ invokeEnterMethods(0);
+ } else {
+ throw new RuntimeException("StateMachine.handleMessage: "
+ + "The start method not called, received msg: " + msg);
+ }
+ performTransitions(msgProcessedState, msg);
- // We need to check if mSm == null here as we could be quitting.
- if (mDbg && mSm != null) mSm.log("handleMessage: X");
+ // We need to check if mSm == null here as we could be quitting.
+ if (mDbg && mSm != null) mSm.log("handleMessage: X");
+ }
}
/**
@@ -908,6 +913,7 @@ public class StateMachine {
mInitialState = null;
mDestState = null;
mDeferredMessages.clear();
+ mHasQuit = true;
}
/**