summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Boehm <hboehm@google.com>2015-07-14 23:25:57 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-14 23:25:57 +0000
commitb9762f77255c4980d364165bc95e7bf05f82b4c6 (patch)
tree9d61a28a342fd5479623aab3c05aecf5e7cbb8c9
parent3c46e93981e5e056df30cd7ab286b3cc0c5644b4 (diff)
parentae807e1d4d5764d74fcbc44556945ff345c27157 (diff)
downloadandroid_packages_apps_ExactCalculator-b9762f77255c4980d364165bc95e7bf05f82b4c6.tar.gz
android_packages_apps_ExactCalculator-b9762f77255c4980d364165bc95e7bf05f82b4c6.tar.bz2
android_packages_apps_ExactCalculator-b9762f77255c4980d364165bc95e7bf05f82b4c6.zip
am ae807e1d: Force reevaluation if mChangedValue is true
* commit 'ae807e1d4d5764d74fcbc44556945ff345c27157': 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('.');