Rename TransactionState to QueuedTransactionState
Clean up some of the logic tracking transaction state on the
client. This will help with some of the upcoming optimizations,
remove some duplicate parceling code and clean up the interface
into SF.
Flag: EXEMPT refactor
Bug: 385156191
Test: presubmit
Change-Id: I701138535000af921e8e026855cd420ff5c8aeea
diff --git a/services/surfaceflinger/FrontEnd/LayerLifecycleManager.cpp b/services/surfaceflinger/FrontEnd/LayerLifecycleManager.cpp
index f1091a6..d369403 100644
--- a/services/surfaceflinger/FrontEnd/LayerLifecycleManager.cpp
+++ b/services/surfaceflinger/FrontEnd/LayerLifecycleManager.cpp
@@ -182,8 +182,8 @@
}
}
-void LayerLifecycleManager::applyTransactions(const std::vector<TransactionState>& transactions,
- bool ignoreUnknownLayers) {
+void LayerLifecycleManager::applyTransactions(
+ const std::vector<QueuedTransactionState>& transactions, bool ignoreUnknownLayers) {
for (const auto& transaction : transactions) {
for (const auto& resolvedComposerState : transaction.states) {
const auto& clientState = resolvedComposerState.state;
diff --git a/services/surfaceflinger/FrontEnd/LayerLifecycleManager.h b/services/surfaceflinger/FrontEnd/LayerLifecycleManager.h
index 330da9a..072be35 100644
--- a/services/surfaceflinger/FrontEnd/LayerLifecycleManager.h
+++ b/services/surfaceflinger/FrontEnd/LayerLifecycleManager.h
@@ -16,8 +16,8 @@
#pragma once
+#include "QueuedTransactionState.h"
#include "RequestedLayerState.h"
-#include "TransactionState.h"
namespace android::surfaceflinger::frontend {
@@ -43,7 +43,8 @@
// the layers it is unreachable. When using the LayerLifecycleManager for layer trace
// generation we may encounter layers which are known because we don't have an explicit
// lifecycle. Ignore these errors while we have to interop with legacy.
- void applyTransactions(const std::vector<TransactionState>&, bool ignoreUnknownLayers = false);
+ void applyTransactions(const std::vector<QueuedTransactionState>&,
+ bool ignoreUnknownLayers = false);
// Ignore unknown handles when iteroping with legacy front end. In the old world, we
// would create child layers which are not necessary with the new front end. This means
// we will get notified for handle changes that don't exist in the new front end.
diff --git a/services/surfaceflinger/FrontEnd/RequestedLayerState.h b/services/surfaceflinger/FrontEnd/RequestedLayerState.h
index 7ddd7ba..dd861a7 100644
--- a/services/surfaceflinger/FrontEnd/RequestedLayerState.h
+++ b/services/surfaceflinger/FrontEnd/RequestedLayerState.h
@@ -23,7 +23,7 @@
#include "Scheduler/LayerInfo.h"
#include "LayerCreationArgs.h"
-#include "TransactionState.h"
+#include "QueuedTransactionState.h"
namespace android::surfaceflinger::frontend {
using namespace ftl::flag_operators;
diff --git a/services/surfaceflinger/FrontEnd/TransactionHandler.cpp b/services/surfaceflinger/FrontEnd/TransactionHandler.cpp
index a1e8213..5bf86e5 100644
--- a/services/surfaceflinger/FrontEnd/TransactionHandler.cpp
+++ b/services/surfaceflinger/FrontEnd/TransactionHandler.cpp
@@ -28,7 +28,7 @@
namespace android::surfaceflinger::frontend {
-void TransactionHandler::queueTransaction(TransactionState&& state) {
+void TransactionHandler::queueTransaction(QueuedTransactionState&& state) {
mLocklessTransactionQueue.push(std::move(state));
mPendingTransactionCount.fetch_add(1);
SFTRACE_INT("TransactionQueue", static_cast<int>(mPendingTransactionCount.load()));
@@ -45,9 +45,9 @@
}
}
-std::vector<TransactionState> TransactionHandler::flushTransactions() {
+std::vector<QueuedTransactionState> TransactionHandler::flushTransactions() {
// Collect transaction that are ready to be applied.
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
TransactionFlushState flushState;
flushState.queueProcessTime = systemTime();
// Transactions with a buffer pending on a barrier may be on a different applyToken
@@ -76,7 +76,7 @@
}
void TransactionHandler::applyUnsignaledBufferTransaction(
- std::vector<TransactionState>& transactions, TransactionFlushState& flushState) {
+ std::vector<QueuedTransactionState>& transactions, TransactionFlushState& flushState) {
if (!flushState.queueWithUnsignaledBuffer) {
return;
}
@@ -98,9 +98,9 @@
}
}
-void TransactionHandler::popTransactionFromPending(std::vector<TransactionState>& transactions,
- TransactionFlushState& flushState,
- std::queue<TransactionState>& queue) {
+void TransactionHandler::popTransactionFromPending(
+ std::vector<QueuedTransactionState>& transactions, TransactionFlushState& flushState,
+ std::queue<QueuedTransactionState>& queue) {
auto& transaction = queue.front();
// Transaction is ready move it from the pending queue.
flushState.firstTransaction = false;
@@ -146,8 +146,8 @@
return ready;
}
-int TransactionHandler::flushPendingTransactionQueues(std::vector<TransactionState>& transactions,
- TransactionFlushState& flushState) {
+int TransactionHandler::flushPendingTransactionQueues(
+ std::vector<QueuedTransactionState>& transactions, TransactionFlushState& flushState) {
int transactionsPendingBarrier = 0;
auto it = mPendingTransactionQueues.begin();
while (it != mPendingTransactionQueues.end()) {
diff --git a/services/surfaceflinger/FrontEnd/TransactionHandler.h b/services/surfaceflinger/FrontEnd/TransactionHandler.h
index 00f6bce..e78dd88 100644
--- a/services/surfaceflinger/FrontEnd/TransactionHandler.h
+++ b/services/surfaceflinger/FrontEnd/TransactionHandler.h
@@ -22,7 +22,7 @@
#include <vector>
#include <LocklessQueue.h>
-#include <TransactionState.h>
+#include <QueuedTransactionState.h>
#include <android-base/thread_annotations.h>
#include <ftl/small_map.h>
#include <ftl/small_vector.h>
@@ -35,7 +35,7 @@
class TransactionHandler {
public:
struct TransactionFlushState {
- TransactionState* transaction;
+ QueuedTransactionState* transaction;
bool firstTransaction = true;
nsecs_t queueProcessTime = 0;
// Layer handles that have transactions with buffers that are ready to be applied.
@@ -61,9 +61,9 @@
bool hasPendingTransactions();
// Moves transactions from the lockless queue.
void collectTransactions();
- std::vector<TransactionState> flushTransactions();
+ std::vector<QueuedTransactionState> flushTransactions();
void addTransactionReadyFilter(TransactionFilter&&);
- void queueTransaction(TransactionState&&);
+ void queueTransaction(QueuedTransactionState&&);
struct StalledTransactionInfo {
pid_t pid;
@@ -81,14 +81,15 @@
// For unit tests
friend class ::android::TestableSurfaceFlinger;
- int flushPendingTransactionQueues(std::vector<TransactionState>&, TransactionFlushState&);
- void applyUnsignaledBufferTransaction(std::vector<TransactionState>&, TransactionFlushState&);
- void popTransactionFromPending(std::vector<TransactionState>&, TransactionFlushState&,
- std::queue<TransactionState>&);
+ int flushPendingTransactionQueues(std::vector<QueuedTransactionState>&, TransactionFlushState&);
+ void applyUnsignaledBufferTransaction(std::vector<QueuedTransactionState>&,
+ TransactionFlushState&);
+ void popTransactionFromPending(std::vector<QueuedTransactionState>&, TransactionFlushState&,
+ std::queue<QueuedTransactionState>&);
TransactionReadiness applyFilters(TransactionFlushState&);
- std::unordered_map<sp<IBinder>, std::queue<TransactionState>, IListenerHash>
+ std::unordered_map<sp<IBinder>, std::queue<QueuedTransactionState>, IListenerHash>
mPendingTransactionQueues;
- LocklessQueue<TransactionState> mLocklessTransactionQueue;
+ LocklessQueue<QueuedTransactionState> mLocklessTransactionQueue;
std::atomic<size_t> mPendingTransactionCount = 0;
ftl::SmallVector<TransactionFilter, 2> mTransactionReadyFilters;
diff --git a/services/surfaceflinger/FrontEnd/Update.h b/services/surfaceflinger/FrontEnd/Update.h
index 4af27ab..f7dfeb8 100644
--- a/services/surfaceflinger/FrontEnd/Update.h
+++ b/services/surfaceflinger/FrontEnd/Update.h
@@ -19,15 +19,15 @@
#include <gui/DisplayInfo.h>
#include "FrontEnd/LayerCreationArgs.h"
+#include "QueuedTransactionState.h"
#include "RequestedLayerState.h"
-#include "TransactionState.h"
namespace android::surfaceflinger::frontend {
// Atomic set of changes affecting layer state. These changes are queued in binder threads and
// applied every vsync.
struct Update {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
std::vector<sp<Layer>> legacyLayers;
std::vector<std::unique_ptr<frontend::RequestedLayerState>> newLayers;
std::vector<LayerCreationArgs> layerCreationArgs;
diff --git a/services/surfaceflinger/TransactionState.h b/services/surfaceflinger/QueuedTransactionState.h
similarity index 85%
rename from services/surfaceflinger/TransactionState.h
rename to services/surfaceflinger/QueuedTransactionState.h
index e5d6481..af40c02 100644
--- a/services/surfaceflinger/TransactionState.h
+++ b/services/surfaceflinger/QueuedTransactionState.h
@@ -16,9 +16,7 @@
#pragma once
-#include <condition_variable>
#include <memory>
-#include <mutex>
#include <vector>
#include "FrontEnd/LayerCreationArgs.h"
#include "renderengine/ExternalTexture.h"
@@ -47,18 +45,20 @@
uint32_t touchCropId = UNASSIGNED_LAYER_ID;
};
-struct TransactionState {
- TransactionState() = default;
+struct QueuedTransactionState {
+ QueuedTransactionState() = default;
- TransactionState(const FrameTimelineInfo& frameTimelineInfo,
- std::vector<ResolvedComposerState>& composerStates,
- const Vector<DisplayState>& displayStates, uint32_t transactionFlags,
- const sp<IBinder>& applyToken, const InputWindowCommands& inputWindowCommands,
- int64_t desiredPresentTime, bool isAutoTimestamp,
- std::vector<uint64_t> uncacheBufferIds, int64_t postTime,
- bool hasListenerCallbacks, std::vector<ListenerCallbacks> listenerCallbacks,
- int originPid, int originUid, uint64_t transactionId,
- std::vector<uint64_t> mergedTransactionIds)
+ QueuedTransactionState(const FrameTimelineInfo& frameTimelineInfo,
+ std::vector<ResolvedComposerState>& composerStates,
+ const Vector<DisplayState>& displayStates, uint32_t transactionFlags,
+ const sp<IBinder>& applyToken,
+ const InputWindowCommands& inputWindowCommands,
+ int64_t desiredPresentTime, bool isAutoTimestamp,
+ std::vector<uint64_t> uncacheBufferIds, int64_t postTime,
+ bool hasListenerCallbacks,
+ std::vector<ListenerCallbacks> listenerCallbacks, int originPid,
+ int originUid, uint64_t transactionId,
+ std::vector<uint64_t> mergedTransactionIds)
: frameTimelineInfo(frameTimelineInfo),
states(std::move(composerStates)),
displays(displayStates),
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index e05c5bd9..dd1119a 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -4774,16 +4774,16 @@
// For tests only
bool SurfaceFlinger::flushTransactionQueues() {
mTransactionHandler.collectTransactions();
- std::vector<TransactionState> transactions = mTransactionHandler.flushTransactions();
+ std::vector<QueuedTransactionState> transactions = mTransactionHandler.flushTransactions();
return applyTransactions(transactions);
}
-bool SurfaceFlinger::applyTransactions(std::vector<TransactionState>& transactions) {
+bool SurfaceFlinger::applyTransactions(std::vector<QueuedTransactionState>& transactions) {
Mutex::Autolock lock(mStateLock);
return applyTransactionsLocked(transactions);
}
-bool SurfaceFlinger::applyTransactionsLocked(std::vector<TransactionState>& transactions) {
+bool SurfaceFlinger::applyTransactionsLocked(std::vector<QueuedTransactionState>& transactions) {
bool needsTraversal = false;
// Now apply all transactions.
for (auto& transaction : transactions) {
@@ -4944,22 +4944,22 @@
}
}
- TransactionState state{frameTimelineInfo,
- resolvedStates,
- displays,
- flags,
- applyToken,
- std::move(inputWindowCommands),
- desiredPresentTime,
- isAutoTimestamp,
- std::move(uncacheBufferIds),
- postTime,
- hasListenerCallbacks,
- listenerCallbacks,
- originPid,
- originUid,
- transactionId,
- mergedTransactionIds};
+ QueuedTransactionState state{frameTimelineInfo,
+ resolvedStates,
+ displays,
+ flags,
+ applyToken,
+ std::move(inputWindowCommands),
+ desiredPresentTime,
+ isAutoTimestamp,
+ std::move(uncacheBufferIds),
+ postTime,
+ hasListenerCallbacks,
+ listenerCallbacks,
+ originPid,
+ originUid,
+ transactionId,
+ mergedTransactionIds};
if (mTransactionTracing) {
mTransactionTracing->addQueuedTransaction(state);
@@ -5044,7 +5044,7 @@
}
bool SurfaceFlinger::applyAndCommitDisplayTransactionStatesLocked(
- std::vector<TransactionState>& transactions) {
+ std::vector<QueuedTransactionState>& transactions) {
bool needsTraversal = false;
uint32_t transactionFlags = 0;
for (auto& transaction : transactions) {
@@ -5438,7 +5438,7 @@
}
void SurfaceFlinger::initializeDisplays() {
- TransactionState state;
+ QueuedTransactionState state;
state.inputWindowCommands = mInputWindowCommands;
const nsecs_t now = systemTime();
state.desiredPresentTime = now;
@@ -5453,7 +5453,7 @@
state.displays.push(DisplayState(display.token(), ui::LayerStack::fromValue(layerStack++)));
}
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back(state);
{
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index c85c084..c2e687f 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -87,6 +87,7 @@
#include "LayerVector.h"
#include "MutexUtils.h"
#include "PowerAdvisor/PowerAdvisor.h"
+#include "QueuedTransactionState.h"
#include "Scheduler/ISchedulerCallback.h"
#include "Scheduler/RefreshRateSelector.h"
#include "Scheduler/Scheduler.h"
@@ -95,7 +96,6 @@
#include "Tracing/LayerTracing.h"
#include "Tracing/TransactionTracing.h"
#include "TransactionCallbackInvoker.h"
-#include "TransactionState.h"
#include "Utils/OnceFuture.h"
#include <algorithm>
@@ -803,8 +803,9 @@
// For test only
bool flushTransactionQueues() REQUIRES(kMainThreadContext);
- bool applyTransactions(std::vector<TransactionState>&) REQUIRES(kMainThreadContext);
- bool applyAndCommitDisplayTransactionStatesLocked(std::vector<TransactionState>& transactions)
+ bool applyTransactions(std::vector<QueuedTransactionState>&) REQUIRES(kMainThreadContext);
+ bool applyAndCommitDisplayTransactionStatesLocked(
+ std::vector<QueuedTransactionState>& transactions)
REQUIRES(kMainThreadContext, mStateLock);
// Returns true if there is at least one transaction that needs to be flushed
@@ -833,7 +834,7 @@
static LatchUnsignaledConfig getLatchUnsignaledConfig();
bool shouldLatchUnsignaled(const layer_state_t&, size_t numStates, bool firstTransaction) const;
- bool applyTransactionsLocked(std::vector<TransactionState>& transactions)
+ bool applyTransactionsLocked(std::vector<QueuedTransactionState>& transactions)
REQUIRES(mStateLock, kMainThreadContext);
uint32_t setDisplayStateLocked(const DisplayState& s) REQUIRES(mStateLock);
uint32_t addInputWindowCommands(const InputWindowCommands& inputWindowCommands)
diff --git a/services/surfaceflinger/Tracing/TransactionProtoParser.cpp b/services/surfaceflinger/Tracing/TransactionProtoParser.cpp
index f39a4d2..2676ca6 100644
--- a/services/surfaceflinger/Tracing/TransactionProtoParser.cpp
+++ b/services/surfaceflinger/Tracing/TransactionProtoParser.cpp
@@ -20,8 +20,8 @@
#include "FrontEnd/LayerCreationArgs.h"
#include "LayerProtoHelper.h"
+#include "QueuedTransactionState.h"
#include "TransactionProtoParser.h"
-#include "TransactionState.h"
#include "gui/LayerState.h"
namespace android::surfaceflinger {
@@ -51,7 +51,8 @@
~FakeExternalTexture() = default;
};
-perfetto::protos::TransactionState TransactionProtoParser::toProto(const TransactionState& t) {
+perfetto::protos::TransactionState TransactionProtoParser::toProto(
+ const QueuedTransactionState& t) {
perfetto::protos::TransactionState proto;
proto.set_pid(t.originPid);
proto.set_uid(t.originUid);
@@ -300,9 +301,9 @@
return proto;
}
-TransactionState TransactionProtoParser::fromProto(
+QueuedTransactionState TransactionProtoParser::fromProto(
const perfetto::protos::TransactionState& proto) {
- TransactionState t;
+ QueuedTransactionState t;
t.originPid = proto.pid();
t.originUid = proto.uid();
t.frameTimelineInfo.vsyncId = proto.vsync_id();
diff --git a/services/surfaceflinger/Tracing/TransactionProtoParser.h b/services/surfaceflinger/Tracing/TransactionProtoParser.h
index b3ab71c..a02e231 100644
--- a/services/surfaceflinger/Tracing/TransactionProtoParser.h
+++ b/services/surfaceflinger/Tracing/TransactionProtoParser.h
@@ -21,7 +21,7 @@
#include "FrontEnd/DisplayInfo.h"
#include "FrontEnd/LayerCreationArgs.h"
-#include "TransactionState.h"
+#include "QueuedTransactionState.h"
namespace android::surfaceflinger {
@@ -44,14 +44,14 @@
TransactionProtoParser(std::unique_ptr<FlingerDataMapper> provider)
: mMapper(std::move(provider)) {}
- perfetto::protos::TransactionState toProto(const TransactionState&);
+ perfetto::protos::TransactionState toProto(const QueuedTransactionState&);
perfetto::protos::TransactionState toProto(
const std::map<uint32_t /* layerId */, TracingLayerState>&);
perfetto::protos::LayerCreationArgs toProto(const LayerCreationArgs& args);
perfetto::protos::LayerState toProto(const ResolvedComposerState&);
static perfetto::protos::DisplayInfo toProto(const frontend::DisplayInfo&, uint32_t layerStack);
- TransactionState fromProto(const perfetto::protos::TransactionState&);
+ QueuedTransactionState fromProto(const perfetto::protos::TransactionState&);
void mergeFromProto(const perfetto::protos::LayerState&, TracingLayerState& outState);
void fromProto(const perfetto::protos::LayerCreationArgs&, LayerCreationArgs& outArgs);
std::unique_ptr<FlingerDataMapper> mMapper;
diff --git a/services/surfaceflinger/Tracing/TransactionTracing.cpp b/services/surfaceflinger/Tracing/TransactionTracing.cpp
index bc9f809..1cd7517 100644
--- a/services/surfaceflinger/Tracing/TransactionTracing.cpp
+++ b/services/surfaceflinger/Tracing/TransactionTracing.cpp
@@ -166,7 +166,7 @@
mBuffer.dump(result);
}
-void TransactionTracing::addQueuedTransaction(const TransactionState& transaction) {
+void TransactionTracing::addQueuedTransaction(const QueuedTransactionState& transaction) {
perfetto::protos::TransactionState* state =
new perfetto::protos::TransactionState(mProtoParser.toProto(transaction));
mTransactionQueue.push(state);
diff --git a/services/surfaceflinger/Tracing/TransactionTracing.h b/services/surfaceflinger/Tracing/TransactionTracing.h
index 7a0fb5e..d784168 100644
--- a/services/surfaceflinger/Tracing/TransactionTracing.h
+++ b/services/surfaceflinger/Tracing/TransactionTracing.h
@@ -134,7 +134,7 @@
// Flush event from perfetto data source
void onFlush(Mode mode);
- void addQueuedTransaction(const TransactionState&);
+ void addQueuedTransaction(const QueuedTransactionState&);
void addCommittedTransactions(int64_t vsyncId, nsecs_t commitTime, frontend::Update& update,
const frontend::DisplayInfos&, bool displayInfoChanged);
status_t writeToFile(const std::string& filename = FILE_PATH);
diff --git a/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp b/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp
index 1dba175..5cf4244 100644
--- a/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp
+++ b/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp
@@ -31,8 +31,8 @@
#include "FrontEnd/LayerCreationArgs.h"
#include "FrontEnd/RequestedLayerState.h"
#include "LayerProtoHelper.h"
+#include "QueuedTransactionState.h"
#include "Tracing/LayerTracing.h"
-#include "TransactionState.h"
#include "cutils/properties.h"
#include "LayerTraceGenerator.h"
@@ -95,11 +95,11 @@
addedLayers.emplace_back(std::make_unique<frontend::RequestedLayerState>(args));
}
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.reserve((size_t)entry.transactions_size());
for (int j = 0; j < entry.transactions_size(); j++) {
// apply transactions
- TransactionState transaction = parser.fromProto(entry.transactions(j));
+ QueuedTransactionState transaction = parser.fromProto(entry.transactions(j));
for (auto& resolvedComposerState : transaction.states) {
if (resolvedComposerState.state.what & layer_state_t::eInputInfoChanged) {
if (!resolvedComposerState.state.windowInfoHandle->getInfo()->inputConfig.test(
diff --git a/services/surfaceflinger/tests/benchmarks/LayerLifecycleManager_benchmarks.cpp b/services/surfaceflinger/tests/benchmarks/LayerLifecycleManager_benchmarks.cpp
index 7641a45..0925118 100644
--- a/services/surfaceflinger/tests/benchmarks/LayerLifecycleManager_benchmarks.cpp
+++ b/services/surfaceflinger/tests/benchmarks/LayerLifecycleManager_benchmarks.cpp
@@ -50,7 +50,7 @@
layers.emplace_back(LayerLifecycleManagerHelper::rootLayer(1));
lifecycleManager.addLayers(std::move(layers));
lifecycleManager.commitChanges();
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
auto& transactionState = transactions.back().states.front();
@@ -74,7 +74,7 @@
std::vector<std::unique_ptr<RequestedLayerState>> layers;
layers.emplace_back(LayerLifecycleManagerHelper::rootLayer(1));
lifecycleManager.addLayers(std::move(layers));
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
auto& transactionState = transactions.back().states.front();
diff --git a/services/surfaceflinger/tests/common/LayerLifecycleManagerHelper.h b/services/surfaceflinger/tests/common/LayerLifecycleManagerHelper.h
index 9794620..a894c41 100644
--- a/services/surfaceflinger/tests/common/LayerLifecycleManagerHelper.h
+++ b/services/surfaceflinger/tests/common/LayerLifecycleManagerHelper.h
@@ -66,8 +66,8 @@
/*mirror=*/UNASSIGNED_LAYER_ID));
}
- static std::vector<TransactionState> setZTransaction(uint32_t id, int32_t z) {
- std::vector<TransactionState> transactions;
+ static std::vector<QueuedTransactionState> setZTransaction(uint32_t id, int32_t z) {
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -109,8 +109,9 @@
mLifecycleManager.addLayers(std::move(layers));
}
- std::vector<TransactionState> reparentLayerTransaction(uint32_t id, uint32_t newParentId) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> reparentLayerTransaction(uint32_t id,
+ uint32_t newParentId) {
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().parentId = newParentId;
@@ -124,8 +125,9 @@
mLifecycleManager.applyTransactions(reparentLayerTransaction(id, newParentId));
}
- std::vector<TransactionState> relativeLayerTransaction(uint32_t id, uint32_t relativeParentId) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> relativeLayerTransaction(uint32_t id,
+ uint32_t relativeParentId) {
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().relativeParentId = relativeParentId;
@@ -139,7 +141,7 @@
}
void removeRelativeZ(uint32_t id) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.what = layer_state_t::eLayerChanged;
@@ -148,7 +150,7 @@
}
void setPosition(uint32_t id, float x, float y) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.what = layer_state_t::ePositionChanged;
@@ -167,7 +169,7 @@
}
void updateBackgroundColor(uint32_t id, half alpha) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.what = layer_state_t::eBackgroundColorChanged;
@@ -183,7 +185,7 @@
}
void setCrop(uint32_t id, const FloatRect& crop) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -196,7 +198,7 @@
void setCrop(uint32_t id, const Rect& crop) { setCrop(id, crop.toFloatRect()); }
void setFlags(uint32_t id, uint32_t mask, uint32_t flags) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -208,7 +210,7 @@
}
void setAlpha(uint32_t id, float alpha) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -219,7 +221,7 @@
}
void setAutoRefresh(uint32_t id, bool autoRefresh) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -236,7 +238,7 @@
void showLayer(uint32_t id) { setFlags(id, layer_state_t::eLayerHidden, 0); }
void setColor(uint32_t id, half3 rgb = half3(1._hf, 1._hf, 1._hf)) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.what = layer_state_t::eColorChanged;
@@ -246,7 +248,7 @@
}
void setLayerStack(uint32_t id, int32_t layerStack) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -257,7 +259,7 @@
}
void setTouchableRegion(uint32_t id, Region region) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -272,7 +274,7 @@
}
void setInputInfo(uint32_t id, std::function<void(gui::WindowInfo&)> configureInput) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -291,7 +293,7 @@
void setTouchableRegionCrop(uint32_t id, Region region, uint32_t touchCropId,
bool replaceTouchableRegionWithCrop) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -309,7 +311,7 @@
}
void setBackgroundBlurRadius(uint32_t id, uint32_t backgroundBlurRadius) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -320,7 +322,7 @@
}
void setFrameRateSelectionPriority(uint32_t id, int32_t priority) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -332,7 +334,7 @@
void setFrameRate(uint32_t id, float frameRate, int8_t compatibility,
int8_t changeFrameRateStrategy) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -345,7 +347,7 @@
}
void setFrameRate(uint32_t id, Layer::FrameRate framerate) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -358,7 +360,7 @@
}
void setFrameRateCategory(uint32_t id, int8_t frameRateCategory) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -369,7 +371,7 @@
}
void setFrameRateSelectionStrategy(uint32_t id, int8_t strategy) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -381,7 +383,7 @@
}
void setDefaultFrameRateCompatibility(uint32_t id, int8_t defaultFrameRateCompatibility) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -394,7 +396,7 @@
}
void setRoundedCorners(uint32_t id, float radius) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -405,7 +407,7 @@
}
void setBuffer(uint32_t id, std::shared_ptr<renderengine::ExternalTexture> texture) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -438,7 +440,7 @@
}
void setBufferCrop(uint32_t id, const Rect& bufferCrop) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -449,7 +451,7 @@
}
void setDamageRegion(uint32_t id, const Region& damageRegion) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -460,7 +462,7 @@
}
void setDataspace(uint32_t id, ui::Dataspace dataspace) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -473,7 +475,7 @@
void setMatrix(uint32_t id, float dsdx, float dtdx, float dtdy, float dsdy) {
layer_state_t::matrix22_t matrix{dsdx, dtdx, dtdy, dsdy};
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -484,7 +486,7 @@
}
void setShadowRadius(uint32_t id, float shadowRadius) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -495,7 +497,7 @@
}
void setTrustedOverlay(uint32_t id, gui::TrustedOverlay trustedOverlay) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -506,7 +508,7 @@
}
void setDropInputMode(uint32_t id, gui::DropInputMode dropInputMode) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
@@ -517,7 +519,7 @@
}
void setGameMode(uint32_t id, gui::GameMode gameMode) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.what = layer_state_t::eMetadataChanged;
@@ -529,7 +531,7 @@
}
void setEdgeExtensionEffect(uint32_t id, int edge) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
diff --git a/services/surfaceflinger/tests/unittests/LayerLifecycleManagerTest.cpp b/services/surfaceflinger/tests/unittests/LayerLifecycleManagerTest.cpp
index c7cc21c..976cecb 100644
--- a/services/surfaceflinger/tests/unittests/LayerLifecycleManagerTest.cpp
+++ b/services/surfaceflinger/tests/unittests/LayerLifecycleManagerTest.cpp
@@ -21,7 +21,7 @@
#include "FrontEnd/LayerLifecycleManager.h"
#include "LayerHierarchyTest.h"
-#include "TransactionState.h"
+#include "QueuedTransactionState.h"
using namespace android::surfaceflinger;
@@ -104,7 +104,7 @@
EXPECT_FALSE(managedLayers.front()->changes.test(RequestedLayerState::Changes::Z));
// apply transactions that do not affect the hierarchy
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.backgroundBlurRadius = 22;
@@ -297,7 +297,7 @@
layers.emplace_back(rootLayer(1));
lifecycleManager.addLayers(std::move(layers));
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.bgColor.a = 0.5;
@@ -326,7 +326,7 @@
layers.emplace_back(rootLayer(1));
lifecycleManager.addLayers(std::move(layers));
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.bgColor.a = 0.5;
@@ -360,7 +360,7 @@
layers.emplace_back(rootLayer(1));
lifecycleManager.addLayers(std::move(layers));
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.bgColor.a = 0.5;
diff --git a/services/surfaceflinger/tests/unittests/LayerSnapshotTest.cpp b/services/surfaceflinger/tests/unittests/LayerSnapshotTest.cpp
index 4d322ef..1177d16 100644
--- a/services/surfaceflinger/tests/unittests/LayerSnapshotTest.cpp
+++ b/services/surfaceflinger/tests/unittests/LayerSnapshotTest.cpp
@@ -329,7 +329,7 @@
}
TEST_F(LayerSnapshotTest, UpdateMetadata) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.what = layer_state_t::eMetadataChanged;
@@ -374,7 +374,7 @@
TEST_F(LayerSnapshotTest, UpdateMetadataOfHiddenLayers) {
hideLayer(1);
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.what = layer_state_t::eMetadataChanged;
@@ -1557,7 +1557,7 @@
setColor(3, {-1._hf, -1._hf, -1._hf});
UPDATE_AND_VERIFY(mSnapshotBuilder, STARTING_ZORDER);
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.what = layer_state_t::eInputInfoChanged;
@@ -1586,7 +1586,7 @@
setColor(3, {-1._hf, -1._hf, -1._hf});
UPDATE_AND_VERIFY(mSnapshotBuilder, STARTING_ZORDER);
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.front().state.what = layer_state_t::eInputInfoChanged;
@@ -2021,7 +2021,7 @@
EXPECT_FALSE(getSnapshot(1)->contentDirty);
}
TEST_F(LayerSnapshotTest, shouldUpdatePictureProfileHandle) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.back().layerId = 1;
@@ -2040,7 +2040,7 @@
TEST_F(LayerSnapshotTest, shouldUpdatePictureProfilePriorityFromAppContentPriority) {
{
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.back().layerId = 1;
@@ -2063,7 +2063,7 @@
2);
}
{
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.emplace_back();
transactions.back().states.push_back({});
transactions.back().states.back().layerId = 1;
diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
index bd1382e..3455c13 100644
--- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
+++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
@@ -514,7 +514,7 @@
mergedTransactionIds);
}
- auto setTransactionStateInternal(TransactionState& transaction) {
+ auto setTransactionStateInternal(QueuedTransactionState& transaction) {
return FTL_FAKE_GUARD(kMainThreadContext,
mFlinger->mTransactionHandler.queueTransaction(
std::move(transaction)));
diff --git a/services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp b/services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp
index 1e8cd0a..69dfcc4 100644
--- a/services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp
+++ b/services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp
@@ -33,8 +33,8 @@
#include <vector>
#include "FrontEnd/TransactionHandler.h"
+#include "QueuedTransactionState.h"
#include "TestableSurfaceFlinger.h"
-#include "TransactionState.h"
#include <com_android_graphics_surfaceflinger_flags.h>
@@ -84,7 +84,7 @@
static_assert(0xffffffffffffffff == static_cast<uint64_t>(-1));
};
- void checkEqual(TransactionInfo info, TransactionState state) {
+ void checkEqual(TransactionInfo info, QueuedTransactionState state) {
EXPECT_EQ(0u, info.states.size());
EXPECT_EQ(0u, state.states.size());
@@ -318,7 +318,7 @@
auto applyToken2 = sp<BBinder>::make();
// Transaction 1 has a buffer with an unfired fence. It should not be ready to be applied.
- TransactionState transaction1;
+ QueuedTransactionState transaction1;
transaction1.applyToken = applyToken1;
transaction1.id = 42069;
transaction1.states.emplace_back();
@@ -340,7 +340,7 @@
transaction1.isAutoTimestamp = true;
// Transaction 2 should be ready to be applied.
- TransactionState transaction2;
+ QueuedTransactionState transaction2;
transaction2.applyToken = applyToken2;
transaction2.id = 2;
transaction2.isAutoTimestamp = true;
@@ -446,15 +446,15 @@
resolvedStates.emplace_back(resolvedState);
}
- TransactionState transactionState(transaction.frameTimelineInfo, resolvedStates,
- transaction.displays, transaction.flags,
- transaction.applyToken,
- transaction.inputWindowCommands,
- transaction.desiredPresentTime,
- transaction.isAutoTimestamp, {}, systemTime(),
- mHasListenerCallbacks, mCallbacks, getpid(),
- static_cast<int>(getuid()), transaction.id,
- transaction.mergedTransactionIds);
+ QueuedTransactionState transactionState(transaction.frameTimelineInfo, resolvedStates,
+ transaction.displays, transaction.flags,
+ transaction.applyToken,
+ transaction.inputWindowCommands,
+ transaction.desiredPresentTime,
+ transaction.isAutoTimestamp, {}, systemTime(),
+ mHasListenerCallbacks, mCallbacks, getpid(),
+ static_cast<int>(getuid()), transaction.id,
+ transaction.mergedTransactionIds);
mFlinger.setTransactionStateInternal(transactionState);
}
mFlinger.flushTransactionQueues();
@@ -955,12 +955,12 @@
TEST(TransactionHandlerTest, QueueTransaction) {
TransactionHandler handler;
- TransactionState transaction;
+ QueuedTransactionState transaction;
transaction.applyToken = sp<BBinder>::make();
transaction.id = 42;
handler.queueTransaction(std::move(transaction));
handler.collectTransactions();
- std::vector<TransactionState> transactionsReadyToBeApplied = handler.flushTransactions();
+ std::vector<QueuedTransactionState> transactionsReadyToBeApplied = handler.flushTransactions();
EXPECT_EQ(transactionsReadyToBeApplied.size(), 1u);
EXPECT_EQ(transactionsReadyToBeApplied.front().id, 42u);
diff --git a/services/surfaceflinger/tests/unittests/TransactionProtoParserTest.cpp b/services/surfaceflinger/tests/unittests/TransactionProtoParserTest.cpp
index af02330..d3eec5c 100644
--- a/services/surfaceflinger/tests/unittests/TransactionProtoParserTest.cpp
+++ b/services/surfaceflinger/tests/unittests/TransactionProtoParserTest.cpp
@@ -30,7 +30,7 @@
TEST(TransactionProtoParserTest, parse) {
const sp<IBinder> displayHandle = sp<BBinder>::make();
- TransactionState t1;
+ QueuedTransactionState t1;
t1.originPid = 1;
t1.originUid = 2;
t1.frameTimelineInfo.vsyncId = 3;
@@ -86,7 +86,7 @@
TransactionProtoParser parser(std::make_unique<TestMapper>(displayHandle));
perfetto::protos::TransactionState proto = parser.toProto(t1);
- TransactionState t2 = parser.fromProto(proto);
+ QueuedTransactionState t2 = parser.fromProto(proto);
ASSERT_EQ(t1.originPid, t2.originPid);
ASSERT_EQ(t1.originUid, t2.originUid);
diff --git a/services/surfaceflinger/tests/unittests/TransactionTracingTest.cpp b/services/surfaceflinger/tests/unittests/TransactionTracingTest.cpp
index f8f08c7..036d8c4 100644
--- a/services/surfaceflinger/tests/unittests/TransactionTracingTest.cpp
+++ b/services/surfaceflinger/tests/unittests/TransactionTracingTest.cpp
@@ -49,19 +49,19 @@
void queueAndCommitTransaction(int64_t vsyncId) {
frontend::Update update;
- TransactionState transaction;
+ QueuedTransactionState transaction;
transaction.id = static_cast<uint64_t>(vsyncId * 3);
transaction.originUid = 1;
transaction.originPid = 2;
mTracing.addQueuedTransaction(transaction);
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
update.transactions.emplace_back(transaction);
mTracing.addCommittedTransactions(vsyncId, 0, update, {}, false);
flush();
}
void verifyEntry(const perfetto::protos::TransactionTraceEntry& actualProto,
- const std::vector<TransactionState>& expectedTransactions,
+ const std::vector<QueuedTransactionState>& expectedTransactions,
int64_t expectedVsyncId) {
EXPECT_EQ(actualProto.vsync_id(), expectedVsyncId);
ASSERT_EQ(actualProto.transactions().size(),
@@ -92,10 +92,10 @@
};
TEST_F(TransactionTracingTest, addTransactions) {
- std::vector<TransactionState> transactions;
+ std::vector<QueuedTransactionState> transactions;
transactions.reserve(100);
for (uint64_t i = 0; i < 100; i++) {
- TransactionState transaction;
+ QueuedTransactionState transaction;
transaction.id = i;
transaction.originPid = static_cast<int32_t>(i);
transaction.mergedTransactionIds = std::vector<uint64_t>{i + 100, i + 102};
@@ -108,13 +108,13 @@
int64_t firstTransactionSetVsyncId = 42;
frontend::Update firstUpdate;
firstUpdate.transactions =
- std::vector<TransactionState>(transactions.begin() + 50, transactions.end());
+ std::vector<QueuedTransactionState>(transactions.begin() + 50, transactions.end());
mTracing.addCommittedTransactions(firstTransactionSetVsyncId, 0, firstUpdate, {}, false);
int64_t secondTransactionSetVsyncId = 43;
frontend::Update secondUpdate;
secondUpdate.transactions =
- std::vector<TransactionState>(transactions.begin(), transactions.begin() + 50);
+ std::vector<QueuedTransactionState>(transactions.begin(), transactions.begin() + 50);
mTracing.addCommittedTransactions(secondTransactionSetVsyncId, 0, secondUpdate, {}, false);
flush();
@@ -140,7 +140,7 @@
getLayerCreationArgs(mChildLayerId, mParentLayerId,
/*layerIdToMirror=*/UNASSIGNED_LAYER_ID, /*flags=*/456,
/*addToRoot=*/true));
- TransactionState transaction;
+ QueuedTransactionState transaction;
transaction.id = 50;
ResolvedComposerState layerState;
layerState.layerId = mParentLayerId;
@@ -164,7 +164,7 @@
// add transactions that modify the layer state further so we can test that layer state
// gets merged
{
- TransactionState transaction;
+ QueuedTransactionState transaction;
transaction.id = 51;
ResolvedComposerState layerState;
layerState.layerId = mParentLayerId;
@@ -278,7 +278,7 @@
/*layerIdToMirror=*/mLayerId, /*flags=*/0,
/*addToRoot=*/false));
- TransactionState transaction;
+ QueuedTransactionState transaction;
transaction.id = 50;
ResolvedComposerState layerState;
layerState.layerId = mLayerId;