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

Commit ba1ebe47 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove spurious copies of QueuedTransactionState." into main

parents 05702787 1cebfc7a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -40,8 +40,8 @@ void TransactionHandler::collectTransactions() {
        if (!maybeTransaction.has_value()) {
            break;
        }
        auto transaction = maybeTransaction.value();
        mPendingTransactionQueues[transaction.applyToken].emplace(std::move(transaction));
        const auto& token = maybeTransaction->applyToken;
        mPendingTransactionQueues[token].emplace(std::move(*maybeTransaction));
    }
}

+6 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ public:

struct QueuedTransactionState {
    QueuedTransactionState() = default;
    QueuedTransactionState(QueuedTransactionState&&) = default;

    QueuedTransactionState(const FrameTimelineInfo& frameTimelineInfo,
                           std::vector<ResolvedComposerState> composerStates,
@@ -152,6 +153,11 @@ struct QueuedTransactionState {
    std::vector<gui::EarlyWakeupInfo> earlyWakeupInfos;
    std::vector<gui::TransactionBarrier> transactionBarriers;
    ftl::Flags<adpf::Workload> workloadHint;

private:
    friend class TransactionTracingTest_addTransactions_Test;
    // Only accessed in tests.
    QueuedTransactionState(const QueuedTransactionState&) = default;
};

} // namespace android
+1 −1
Original line number Diff line number Diff line
@@ -5765,7 +5765,7 @@ void SurfaceFlinger::initializeDisplays() {
    }

    std::vector<QueuedTransactionState> transactions;
    transactions.emplace_back(state);
    transactions.emplace_back(std::move(state));

    {
        Mutex::Autolock lock(mStateLock);
+5 −5
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ public:
        std::vector<gui::EarlyWakeupInfo> earlyWakeupInfos;
    };

    void checkEqual(const TransactionState& info, QueuedTransactionState state) {
    void checkEqual(const TransactionState& info, const QueuedTransactionState& state) {
        EXPECT_EQ(0u, info.mComposerStates.size());
        EXPECT_EQ(0u, state.states.size());

@@ -189,7 +189,7 @@ public:
        mFlinger.flushTransactionQueues();

        // check that the transaction was applied.
        auto transactionQueue = mFlinger.getPendingTransactionQueue();
        const auto& transactionQueue = mFlinger.getPendingTransactionQueue();
        EXPECT_EQ(0u, transactionQueue.size());
    }

@@ -322,12 +322,12 @@ TEST_F(TransactionApplicationTest, ApplyTokensUseDifferentQueues) {
    mFlinger.setTransactionStateInternal(transaction1);
    mFlinger.setTransactionStateInternal(transaction2);
    mFlinger.flushTransactionQueues();
    auto transactionQueues = mFlinger.getPendingTransactionQueue();
    const auto& transactionQueues = mFlinger.getPendingTransactionQueue();

    // Transaction 1 is still in its queue.
    EXPECT_EQ(transactionQueues[applyToken1].size(), 1u);
    EXPECT_EQ(transactionQueues.at(applyToken1).size(), 1u);
    // Transaction 2 has been dequeued.
    EXPECT_EQ(transactionQueues[applyToken2].size(), 0u);
    EXPECT_FALSE(transactionQueues.contains(applyToken2));
}

class LatchUnsignaledTest : public TransactionApplicationTest {
+14 −10
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include <layerproto/LayerProtoHeader.h>
#include "FrontEnd/LayerCreationArgs.h"
#include "FrontEnd/Update.h"
#include "QueuedTransactionState.h"
#include "Tracing/LayerTracing.h"
#include "Tracing/TransactionTracing.h"

@@ -55,7 +56,7 @@ protected:
        transaction.originPid = 2;
        mTracing.addQueuedTransaction(transaction);
        std::vector<QueuedTransactionState> transactions;
        update.transactions.emplace_back(transaction);
        update.transactions.emplace_back(std::move(transaction));
        mTracing.addCommittedTransactions(vsyncId, 0, update, {}, false);
        flush();
    }
@@ -67,7 +68,7 @@ protected:
        ASSERT_EQ(actualProto.transactions().size(),
                  static_cast<int32_t>(expectedTransactions.size()));
        for (uint32_t i = 0; i < expectedTransactions.size(); i++) {
            const auto expectedTransaction = expectedTransactions[i];
            const auto& expectedTransaction = expectedTransactions[i];
            const auto protoTransaction = actualProto.transactions(static_cast<int32_t>(i));
            EXPECT_EQ(protoTransaction.transaction_id(), expectedTransaction.id);
            EXPECT_EQ(protoTransaction.pid(), expectedTransaction.originPid);
@@ -99,7 +100,7 @@ TEST_F(TransactionTracingTest, addTransactions) {
        transaction.id = i;
        transaction.originPid = static_cast<int32_t>(i);
        transaction.mergedTransactionIds = std::vector<uint64_t>{i + 100, i + 102};
        transactions.emplace_back(transaction);
        transactions.emplace_back(QueuedTransactionState(transaction));
        mTracing.addQueuedTransaction(transaction);
    }

@@ -107,14 +108,17 @@ TEST_F(TransactionTracingTest, addTransactions) {
    // commits.
    int64_t firstTransactionSetVsyncId = 42;
    frontend::Update firstUpdate;
    firstUpdate.transactions =
            std::vector<QueuedTransactionState>(transactions.begin() + 50, transactions.end());
    for (auto it = transactions.begin() + 50; it < transactions.end(); ++it) {
        firstUpdate.transactions.emplace_back(QueuedTransactionState(*it));
    }
    mTracing.addCommittedTransactions(firstTransactionSetVsyncId, 0, firstUpdate, {}, false);

    int64_t secondTransactionSetVsyncId = 43;
    frontend::Update secondUpdate;
    secondUpdate.transactions =
            std::vector<QueuedTransactionState>(transactions.begin(), transactions.begin() + 50);
    for (auto it = transactions.begin(); it < transactions.begin() + 50; ++it) {
        secondUpdate.transactions.emplace_back(QueuedTransactionState(*it));
    }

    mTracing.addCommittedTransactions(secondTransactionSetVsyncId, 0, secondUpdate, {}, false);
    flush();

@@ -154,7 +158,7 @@ protected:
            transaction.states.emplace_back(childState);
            mTracing.addQueuedTransaction(transaction);

            update.transactions.emplace_back(transaction);
            update.transactions.emplace_back(std::move(transaction));
            VSYNC_ID_FIRST_LAYER_CHANGE = ++mVsyncId;
            mTracing.addCommittedTransactions(VSYNC_ID_FIRST_LAYER_CHANGE, 0, update, {}, false);

@@ -175,7 +179,7 @@ protected:
            mTracing.addQueuedTransaction(transaction);

            frontend::Update update;
            update.transactions.emplace_back(transaction);
            update.transactions.emplace_back(std::move(transaction));
            VSYNC_ID_SECOND_LAYER_CHANGE = ++mVsyncId;
            mTracing.addCommittedTransactions(VSYNC_ID_SECOND_LAYER_CHANGE, 0, update, {}, false);
            flush();
@@ -292,7 +296,7 @@ protected:
            transaction.states.emplace_back(mirrorState);
            mTracing.addQueuedTransaction(transaction);

            update.transactions.emplace_back(transaction);
            update.transactions.emplace_back(std::move(transaction));
            mTracing.addCommittedTransactions(mVsyncId, 0, update, {}, false);
            flush();
        }