summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chavi Weingarten <chaviw@google.com> 2022-02-09 15:41:48 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-02-09 15:41:48 +0000
commite18b5a4eb8ef4f2c00ed8c8ff3cc68a905f91dfa (patch)
treefa66383aa86e865d6e16178117355099181f0e0c
parentec9f965bb167b9d64ad4dc38641a8b9809d9cf6c (diff)
parentd84085a2bab2019124cd5fd35dede59e39e5682f (diff)
Merge "Add gatherPendingTransactions in BBQ"
-rw-r--r--libs/gui/BLASTBufferQueue.cpp8
-rw-r--r--libs/gui/include/gui/BLASTBufferQueue.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp
index aeb237deb4..7ce72ffa59 100644
--- a/libs/gui/BLASTBufferQueue.cpp
+++ b/libs/gui/BLASTBufferQueue.cpp
@@ -842,6 +842,14 @@ void BLASTBufferQueue::mergePendingTransactions(SurfaceComposerClient::Transacti
mPendingTransactions.end());
}
+SurfaceComposerClient::Transaction* BLASTBufferQueue::gatherPendingTransactions(
+ uint64_t frameNumber) {
+ std::lock_guard _lock{mMutex};
+ SurfaceComposerClient::Transaction* t = new SurfaceComposerClient::Transaction();
+ mergePendingTransactions(t, frameNumber);
+ return t;
+}
+
// Maintains a single worker thread per process that services a list of runnables.
class AsyncWorker : public Singleton<AsyncWorker> {
private:
diff --git a/libs/gui/include/gui/BLASTBufferQueue.h b/libs/gui/include/gui/BLASTBufferQueue.h
index f77cfe6a69..1ed592b506 100644
--- a/libs/gui/include/gui/BLASTBufferQueue.h
+++ b/libs/gui/include/gui/BLASTBufferQueue.h
@@ -98,6 +98,7 @@ public:
void setSyncTransaction(SurfaceComposerClient::Transaction* t, bool acquireSingleBuffer = true);
void mergeWithNextTransaction(SurfaceComposerClient::Transaction* t, uint64_t frameNumber);
void applyPendingTransactions(uint64_t frameNumber);
+ SurfaceComposerClient::Transaction* gatherPendingTransactions(uint64_t frameNumber);
void update(const sp<SurfaceControl>& surface, uint32_t width, uint32_t height, int32_t format,
SurfaceComposerClient::Transaction* outTransaction = nullptr);