Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fce5cefa authored by Hans Boehm's avatar Hans Boehm Committed by Android Git Automerger
Browse files

am 6e1f6822: am 3fa10288: am b9762f77: am ae807e1d: Force reevaluation if mChangedValue is true

* commit '6e1f6822':
  Force reevaluation if mChangedValue is true
parents 475b4432 6e1f6822
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -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('.');