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

Commit 0e59c8d5 authored by Huihong Luo's avatar Huihong Luo Committed by Automerger Merge Worker
Browse files

Merge "Skip caching if any layer has protected contents" into sc-dev am: 963026b8

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15053550

Change-Id: I5da47309c8bc22359f7f6b8c8f2cc949620f4223
parents 86e1aa16 963026b8
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -378,10 +378,14 @@ void CachedSet::dump(std::string& result) const {
    if (mLayers.size() == 1) {
    if (mLayers.size() == 1) {
        base::StringAppendF(&result, "    Layer [%s]\n", mLayers[0].getName().c_str());
        base::StringAppendF(&result, "    Layer [%s]\n", mLayers[0].getName().c_str());
        base::StringAppendF(&result, "    Buffer %p", mLayers[0].getBuffer().get());
        base::StringAppendF(&result, "    Buffer %p", mLayers[0].getBuffer().get());
        base::StringAppendF(&result, "    Protected [%s]",
                            mLayers[0].getState()->isProtected() ? "true" : "false");
    } else {
    } else {
        result.append("    Cached set of:");
        result.append("    Cached set of:");
        for (const Layer& layer : mLayers) {
        for (const Layer& layer : mLayers) {
            base::StringAppendF(&result, "\n      Layer [%s]", layer.getName().c_str());
            base::StringAppendF(&result, "\n      Layer [%s]", layer.getName().c_str());
            base::StringAppendF(&result, "\n      Protected [%s]",
                                layer.getState()->isProtected() ? "true" : "false");
        }
        }
    }
    }


+9 −1
Original line number Original line Diff line number Diff line
@@ -420,7 +420,7 @@ std::vector<Flattener::Run> Flattener::findCandidateRuns(time_point now) const {
        const bool layerIsInactive = now - currentSet->getLastUpdate() > mActiveLayerTimeout;
        const bool layerIsInactive = now - currentSet->getLastUpdate() > mActiveLayerTimeout;
        const bool layerHasBlur = currentSet->hasBlurBehind();
        const bool layerHasBlur = currentSet->hasBlurBehind();
        if (layerIsInactive && (firstLayer || runHasFirstLayer || !layerHasBlur) &&
        if (layerIsInactive && (firstLayer || runHasFirstLayer || !layerHasBlur) &&
            !currentSet->hasHdrLayers() && !currentSet->hasProtectedLayers()) {
            !currentSet->hasHdrLayers()) {
            if (isPartOfRun) {
            if (isPartOfRun) {
                builder.append(currentSet->getLayerCount());
                builder.append(currentSet->getLayerCount());
            } else {
            } else {
@@ -491,6 +491,14 @@ void Flattener::buildCachedSets(time_point now) {
        return;
        return;
    }
    }


    for (const CachedSet& layer : mLayers) {
        // TODO (b/191997217): make it less aggressive, and sync with findCandidateRuns
        if (layer.hasProtectedLayers()) {
            ATRACE_NAME("layer->hasProtectedLayers()");
            return;
        }
    }

    std::vector<Run> runs = findCandidateRuns(now);
    std::vector<Run> runs = findCandidateRuns(now);


    std::optional<Run> bestRun = findBestRun(runs);
    std::optional<Run> bestRun = findBestRun(runs);