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

Commit 3282b3cf authored by Valerie Hau's avatar Valerie Hau
Browse files

TEMPORARY FIX: add sync point logic to BufferStateLayers

WindowManager still relies on deferred transaction logic,
and a BufferStateLayer may be deferred on itself.  Adding
sync point logic to BufferStateLayer for now to support,
must be removed as soon as WindowManager migrates off
deferred transactions

Bug: 146345307
Test: build, boot, ASurfaceControl_test, manual Chrome,
SurfaceFlinger_test

Change-Id: I20578ee2d11e89efdb93852113c193d694360c65
parent 20a6ee25
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -138,6 +138,8 @@ bool BufferStateLayer::willPresentCurrentTransaction() const {
        !mLayerDetached;
}

/* TODO: vhau uncomment once deferred transaction migration complete in
 * WindowManager
void BufferStateLayer::pushPendingState() {
    if (!mCurrentState.modified) {
        return;
@@ -145,13 +147,12 @@ void BufferStateLayer::pushPendingState() {
    mPendingStates.push_back(mCurrentState);
    ATRACE_INT(mTransactionName.c_str(), mPendingStates.size());
}
*/

bool BufferStateLayer::applyPendingStates(Layer::State* stateToCommit) {
    const bool stateUpdateAvailable = !mPendingStates.empty();
    while (!mPendingStates.empty()) {
        popPendingState(stateToCommit);
    }
    mCurrentStateModified = stateUpdateAvailable && mCurrentState.modified;
    mCurrentStateModified = mCurrentState.modified;
    bool stateUpdateAvailable = Layer::applyPendingStates(stateToCommit);
    mCurrentStateModified = stateUpdateAvailable && mCurrentStateModified;
    mCurrentState.modified = false;
    return stateUpdateAvailable;
}
+3 −1
Original line number Diff line number Diff line
@@ -50,7 +50,9 @@ public:
    uint32_t doTransactionResize(uint32_t flags, Layer::State* /*stateToCommit*/) override {
        return flags;
    }
    void pushPendingState() override;
    /*TODO:vhau return to using BufferStateLayer override once WM
     * has removed deferred transactions!
    void pushPendingState() override;*/
    bool applyPendingStates(Layer::State* stateToCommit) override;

    uint32_t getActiveWidth(const Layer::State& s) const override { return s.active.w; }