summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Boehm <hboehm@google.com>2015-07-14 23:42:31 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-14 23:42:31 +0000
commit3fa10288cb006bdd92afcf07b97f50367054da88 (patch)
treed5807819979034ccb38db0cd4b1bd515b5ee319f
parent9942e6f277343f5a9cb26346b588c9a181ad3695 (diff)
parentb9762f77255c4980d364165bc95e7bf05f82b4c6 (diff)
downloadandroid_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.java23
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('.');