diff options
author | Hans Boehm <hboehm@google.com> | 2015-07-14 23:42:31 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-14 23:42:31 +0000 |
commit | 3fa10288cb006bdd92afcf07b97f50367054da88 (patch) | |
tree | d5807819979034ccb38db0cd4b1bd515b5ee319f | |
parent | 9942e6f277343f5a9cb26346b588c9a181ad3695 (diff) | |
parent | b9762f77255c4980d364165bc95e7bf05f82b4c6 (diff) | |
download | android_packages_apps_ExactCalculator-3fa10288cb006bdd92afcf07b97f50367054da88.tar.gz android_packages_apps_ExactCalculator-3fa10288cb006bdd92afcf07b97f50367054da88.tar.bz2 android_packages_apps_ExactCalculator-3fa10288cb006bdd92afcf07b97f50367054da88.zip |
am b9762f77: am ae807e1d: Force reevaluation if mChangedValue is true
* commit 'b9762f77255c4980d364165bc95e7bf05f82b4c6':
Force reevaluation if mChangedValue is true
-rw-r--r-- | src/com/android/calculator2/Evaluator.java | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/com/android/calculator2/Evaluator.java b/src/com/android/calculator2/Evaluator.java index 4bdc56f..a97d946 100644 --- a/src/com/android/calculator2/Evaluator.java +++ b/src/com/android/calculator2/Evaluator.java @@ -787,6 +787,18 @@ class Evaluator { clearCache(); } + /** + * Start asynchronous result evaluation of formula. + * Will result in display on completion. + * @param required result was explicitly requested by user. + */ + private void reevaluateResult(boolean required) { + clearCache(); + mEvaluator = new AsyncDisplayResult(mDegreeMode, required); + mEvaluator.execute(); + mChangedValue = false; + } + // Begin evaluation of result and display when ready. // We assume this is called after each insertion and deletion. // Thus if we are called twice with the same effective end of @@ -796,13 +808,10 @@ class Evaluator { // Already done or in progress. return; } - clearCache(); // In very odd cases, there can be significant latency to evaluate. // Don't show obsolete result. mResult.clear(); - mEvaluator = new AsyncDisplayResult(mDegreeMode, false); - mEvaluator.execute(); - mChangedValue = false; + reevaluateResult(false); } // Ensure that we either display a result or complain. @@ -810,12 +819,10 @@ class Evaluator { // We presume that any prior result was computed using the same // expression. void requireResult() { - if (mCache == null) { + if (mCache == null || mChangedValue) { // Restart evaluator in requested mode, i.e. with longer timeout. cancelAll(true); - clearCache(); - mEvaluator = new AsyncDisplayResult(mDegreeMode, true); - mEvaluator.execute(); + reevaluateResult(true); } else { // Notify immediately, reusing existing result. int dotPos = mCache.indexOf('.'); |