diff options
| author | 2011-12-07 19:50:03 -0800 | |
|---|---|---|
| committer | 2011-12-07 19:50:03 -0800 | |
| commit | d426c338a66f63f8e5528ac38ec5b61625f2c897 (patch) | |
| tree | db6fdd657d22ae7ec3963869c0e436aa35b8deb9 | |
| parent | ca0a68cc8afd023c94bcd5a1f3f2b2f9407fbe3b (diff) | |
| parent | a544d467f2a876f2ada2880214b3157cfaef769f (diff) | |
Merge "Reduce likelihood of crash in state machine." into ics-mr1
| -rw-r--r-- | core/java/com/android/internal/util/StateMachine.java | 52 |
1 files changed, 47 insertions, 5 deletions
diff --git a/core/java/com/android/internal/util/StateMachine.java b/core/java/com/android/internal/util/StateMachine.java index 72489a2b72d2..61c0c8e8cca5 100644 --- a/core/java/com/android/internal/util/StateMachine.java +++ b/core/java/com/android/internal/util/StateMachine.java @@ -1367,10 +1367,12 @@ public class StateMachine { /** * Get a message and set Message.target = this. * - * @return message + * @return message or null if SM has quit */ public final Message obtainMessage() { + if (mSmHandler == null) return null; + return Message.obtain(mSmHandler); } @@ -1378,9 +1380,11 @@ public class StateMachine { * Get a message and set Message.target = this and what * * @param what is the assigned to Message.what. - * @return message + * @return message or null if SM has quit */ public final Message obtainMessage(int what) { + if (mSmHandler == null) return null; + return Message.obtain(mSmHandler, what); } @@ -1390,10 +1394,12 @@ public class StateMachine { * * @param what is the assigned to Message.what. * @param obj is assigned to Message.obj. - * @return message + * @return message or null if SM has quit */ public final Message obtainMessage(int what, Object obj) { + if (mSmHandler == null) return null; + return Message.obtain(mSmHandler, what, obj); } @@ -1404,10 +1410,13 @@ public class StateMachine { * @param what is assigned to Message.what * @param arg1 is assigned to Message.arg1 * @param arg2 is assigned to Message.arg2 - * @return A Message object from the global pool. + * @return A Message object from the global pool or null if + * SM has quit */ public final Message obtainMessage(int what, int arg1, int arg2) { + if (mSmHandler == null) return null; + return Message.obtain(mSmHandler, what, arg1, arg2); } @@ -1419,10 +1428,13 @@ public class StateMachine { * @param arg1 is assigned to Message.arg1 * @param arg2 is assigned to Message.arg2 * @param obj is assigned to Message.obj - * @return A Message object from the global pool. + * @return A Message object from the global pool or null if + * SM has quit */ public final Message obtainMessage(int what, int arg1, int arg2, Object obj) { + if (mSmHandler == null) return null; + return Message.obtain(mSmHandler, what, arg1, arg2, obj); } @@ -1430,6 +1442,9 @@ public class StateMachine { * Enqueue a message to this state machine. */ public final void sendMessage(int what) { + // mSmHandler can be null if the state machine has quit. + if (mSmHandler == null) return; + mSmHandler.sendMessage(obtainMessage(what)); } @@ -1437,6 +1452,9 @@ public class StateMachine { * Enqueue a message to this state machine. */ public final void sendMessage(int what, Object obj) { + // mSmHandler can be null if the state machine has quit. + if (mSmHandler == null) return; + mSmHandler.sendMessage(obtainMessage(what,obj)); } @@ -1444,6 +1462,9 @@ public class StateMachine { * Enqueue a message to this state machine. */ public final void sendMessage(Message msg) { + // mSmHandler can be null if the state machine has quit. + if (mSmHandler == null) return; + mSmHandler.sendMessage(msg); } @@ -1451,6 +1472,9 @@ public class StateMachine { * Enqueue a message to this state machine after a delay. */ public final void sendMessageDelayed(int what, long delayMillis) { + // mSmHandler can be null if the state machine has quit. + if (mSmHandler == null) return; + mSmHandler.sendMessageDelayed(obtainMessage(what), delayMillis); } @@ -1458,6 +1482,9 @@ public class StateMachine { * Enqueue a message to this state machine after a delay. */ public final void sendMessageDelayed(int what, Object obj, long delayMillis) { + // mSmHandler can be null if the state machine has quit. + if (mSmHandler == null) return; + mSmHandler.sendMessageDelayed(obtainMessage(what, obj), delayMillis); } @@ -1465,6 +1492,9 @@ public class StateMachine { * Enqueue a message to this state machine after a delay. */ public final void sendMessageDelayed(Message msg, long delayMillis) { + // mSmHandler can be null if the state machine has quit. + if (mSmHandler == null) return; + mSmHandler.sendMessageDelayed(msg, delayMillis); } @@ -1509,6 +1539,9 @@ public class StateMachine { * will be processed. */ public final void quit() { + // mSmHandler can be null if the state machine has quit. + if (mSmHandler == null) return; + mSmHandler.quit(); } @@ -1523,6 +1556,9 @@ public class StateMachine { * @return if debugging is enabled */ public boolean isDbg() { + // mSmHandler can be null if the state machine has quit. + if (mSmHandler == null) return false; + return mSmHandler.isDbg(); } @@ -1532,6 +1568,9 @@ public class StateMachine { * @param dbg is true to enable debugging. */ public void setDbg(boolean dbg) { + // mSmHandler can be null if the state machine has quit. + if (mSmHandler == null) return; + mSmHandler.setDbg(dbg); } @@ -1539,6 +1578,9 @@ public class StateMachine { * Start the state machine. */ public void start() { + // mSmHandler can be null if the state machine has quit. + if (mSmHandler == null) return; + /** Send the complete construction message */ mSmHandler.completeConstruction(); } |