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

Commit 024a1912 authored by Marissa Wall's avatar Marissa Wall
Browse files

blast: update hasDrawingBuffer to hasFrameUpdate

hasFrameUpdate is a more accurate name than hasDrawingBuffer.
Also keep track of when the current state has been modified
and only return true for BufferStateLayer::hasFrameUpdate
when the state has been modified and the buffer is not null.

Test: Transaction_test
Bug: 80477568

Change-Id: Icec6cf62490799988bd967914986bf92a07ce726
parent dda548dd
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -522,7 +522,7 @@ void BufferLayer::notifyAvailableFrames() {
}

bool BufferLayer::hasReadyFrame() const {
    return hasDrawingBuffer() || getSidebandStreamChanged() || getAutoRefresh();
    return hasFrameUpdate() || getSidebandStreamChanged() || getAutoRefresh();
}

uint32_t BufferLayer::getEffectiveScalingMode() const {
@@ -660,7 +660,7 @@ void BufferLayer::drawWithOpenGL(const RenderArea& renderArea, bool useIdentityT
}

uint64_t BufferLayer::getHeadFrameNumber() const {
    if (hasDrawingBuffer()) {
    if (hasFrameUpdate()) {
        return getFrameNumber();
    } else {
        return mCurrentFrameNumber;
+1 −1
Original line number Diff line number Diff line
@@ -134,7 +134,7 @@ private:

    virtual std::optional<Region> latchSidebandStream(bool& recomputeVisibleRegions) = 0;

    virtual bool hasDrawingBuffer() const = 0;
    virtual bool hasFrameUpdate() const = 0;

    virtual void setFilteringEnabled(bool enabled) = 0;

+4 −4
Original line number Diff line number Diff line
@@ -82,7 +82,7 @@ bool BufferQueueLayer::shouldPresentNow(nsecs_t expectedPresentTime) const {
        return true;
    }

    if (!hasDrawingBuffer()) {
    if (!hasFrameUpdate()) {
        return false;
    }

@@ -110,7 +110,7 @@ bool BufferQueueLayer::fenceHasSignaled() const {
        return true;
    }

    if (!hasDrawingBuffer()) {
    if (!hasFrameUpdate()) {
        return true;
    }

@@ -206,7 +206,7 @@ std::optional<Region> BufferQueueLayer::latchSidebandStream(bool& recomputeVisib
    return {};
}

bool BufferQueueLayer::hasDrawingBuffer() const {
bool BufferQueueLayer::hasFrameUpdate() const {
    return mQueuedFrames > 0;
}

@@ -403,7 +403,7 @@ void BufferQueueLayer::onFrameReplaced(const BufferItem& item) {
            }
        }

        if (!hasDrawingBuffer()) {
        if (!hasFrameUpdate()) {
            ALOGE("Can't replace a frame on an empty queue");
            return;
        }
+1 −1
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ private:

    std::optional<Region> latchSidebandStream(bool& recomputeVisibleRegions) override;

    bool hasDrawingBuffer() const override;
    bool hasFrameUpdate() const override;

    void setFilteringEnabled(bool enabled) override;

+5 −3
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ bool BufferStateLayer::shouldPresentNow(nsecs_t /*expectedPresentTime*/) const {
        return true;
    }

    return hasDrawingBuffer();
    return hasFrameUpdate();
}

bool BufferStateLayer::getTransformToDisplayInverse() const {
@@ -81,6 +81,7 @@ bool BufferStateLayer::applyPendingStates(Layer::State* stateToCommit) {
    while (!mPendingStates.empty()) {
        popPendingState(stateToCommit);
    }
    mCurrentStateModified = stateUpdateAvailable && mCurrentState.modified;
    mCurrentState.modified = false;
    return stateUpdateAvailable;
}
@@ -314,8 +315,8 @@ std::optional<Region> BufferStateLayer::latchSidebandStream(bool& recomputeVisib
    return {};
}

bool BufferStateLayer::hasDrawingBuffer() const {
    return getDrawingState().buffer != nullptr;
bool BufferStateLayer::hasFrameUpdate() const {
    return mCurrentStateModified && getCurrentState().buffer != nullptr;
}

void BufferStateLayer::setFilteringEnabled(bool enabled) {
@@ -513,6 +514,7 @@ void BufferStateLayer::setHwcLayerBuffer(const sp<const DisplayDevice>& display)
              s.buffer->handle, to_string(error).c_str(), static_cast<int32_t>(error));
    }

    mCurrentStateModified = false;
    mFrameNumber++;
}

Loading