diff options
author | Hans Boehm <hboehm@google.com> | 2015-07-14 23:55:54 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-14 23:55:54 +0000 |
commit | 6e1f6822c7b4c5b3f339e5981b3f8a96b6661a83 (patch) | |
tree | d62b78cd7493659e0118f436eb7326d3cf86a38e | |
parent | 9ebc9463ece53c75e290a4ca378f46f19d087614 (diff) | |
parent | 3fa10288cb006bdd92afcf07b97f50367054da88 (diff) | |
download | android_packages_apps_ExactCalculator-6e1f6822c7b4c5b3f339e5981b3f8a96b6661a83.tar.gz android_packages_apps_ExactCalculator-6e1f6822c7b4c5b3f339e5981b3f8a96b6661a83.tar.bz2 android_packages_apps_ExactCalculator-6e1f6822c7b4c5b3f339e5981b3f8a96b6661a83.zip |
am 3fa10288: am b9762f77: am ae807e1d: Force reevaluation if mChangedValue is true
* commit '3fa10288cb006bdd92afcf07b97f50367054da88':
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('.'); |