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

Commit 91ac3b55 authored by Huihong Luo's avatar Huihong Luo
Browse files

Avoid duplicate rendering of the same cached override buffer

Bug: 183454078
Test: turn on layer caching, perform manual test
Change-Id: I85789afe68e9c0732436eb2f2f63afa26cc8f728
parent 5ea461ca
Loading
Loading
Loading
Loading
+9 −2
Original line number Original line Diff line number Diff line
@@ -1104,6 +1104,7 @@ std::vector<LayerFE::LayerSettings> Output::generateClientCompositionRequests(
    Region stubRegion;
    Region stubRegion;


    bool disableBlurs = false;
    bool disableBlurs = false;
    sp<GraphicBuffer> previousOverrideBuffer = nullptr;


    for (auto* layer : getOutputLayersOrderedByZ()) {
    for (auto* layer : getOutputLayersOrderedByZ()) {
        const auto& layerState = layer->getState();
        const auto& layerState = layer->getState();
@@ -1153,8 +1154,14 @@ std::vector<LayerFE::LayerSettings> Output::generateClientCompositionRequests(


            std::vector<LayerFE::LayerSettings> results;
            std::vector<LayerFE::LayerSettings> results;
            if (layer->getState().overrideInfo.buffer != nullptr) {
            if (layer->getState().overrideInfo.buffer != nullptr) {
                if (layer->getState().overrideInfo.buffer != previousOverrideBuffer) {
                    results = layer->getOverrideCompositionList();
                    results = layer->getOverrideCompositionList();
                    previousOverrideBuffer = layer->getState().overrideInfo.buffer;
                    ALOGV("Replacing [%s] with override in RE", layer->getLayerFE().getDebugName());
                    ALOGV("Replacing [%s] with override in RE", layer->getLayerFE().getDebugName());
                } else {
                    ALOGV("Skipping redundant override buffer for [%s] in RE",
                          layer->getLayerFE().getDebugName());
                }
            } else {
            } else {
                results = layerFE.prepareClientCompositionList(targetSettings);
                results = layerFE.prepareClientCompositionList(targetSettings);
                if (realContentIsVisible && !results.empty()) {
                if (realContentIsVisible && !results.empty()) {