summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/TransactionCompletedThread.cpp
diff options
context:
space:
mode:
author Jorim Jaggi <jjaggi@google.com> 2020-11-24 23:51:31 +0100
committer Jorim Jaggi <jjaggi@google.com> 2020-12-10 16:17:14 +0100
commit9c03b50a30c163ad4cee13455311812ef563db40 (patch)
tree380089958aada0c2e68d86a690b717c97547fe1e /services/surfaceflinger/TransactionCompletedThread.cpp
parent5814ab8b847af326de5c46a1b5f2409ff404fc3a (diff)
Add Shared timeline jank classification listener (1/2)
Adds the ability to register a listener that gets informed about SF' jank classifications via the TransactionCompleted interface Bug: 17475548 Test: FrameTimelineTest Test: Register listener, ensure data flows back Change-Id: Ie42c508da605c03569eadab6ab18b7315b35d247
Diffstat (limited to 'services/surfaceflinger/TransactionCompletedThread.cpp')
-rw-r--r--services/surfaceflinger/TransactionCompletedThread.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/services/surfaceflinger/TransactionCompletedThread.cpp b/services/surfaceflinger/TransactionCompletedThread.cpp
index ca244934e4..1797af4cf6 100644
--- a/services/surfaceflinger/TransactionCompletedThread.cpp
+++ b/services/surfaceflinger/TransactionCompletedThread.cpp
@@ -153,7 +153,7 @@ status_t TransactionCompletedThread::registerPendingCallbackHandle(
}
status_t TransactionCompletedThread::finalizePendingCallbackHandles(
- const std::deque<sp<CallbackHandle>>& handles) {
+ const std::deque<sp<CallbackHandle>>& handles, const std::vector<JankData>& jankData) {
if (handles.empty()) {
return NO_ERROR;
}
@@ -186,7 +186,7 @@ status_t TransactionCompletedThread::finalizePendingCallbackHandles(
ALOGW("cannot find listener in mPendingTransactions");
}
- status_t err = addCallbackHandle(handle);
+ status_t err = addCallbackHandle(handle, jankData);
if (err != NO_ERROR) {
ALOGE("could not add callback handle");
return err;
@@ -204,7 +204,7 @@ status_t TransactionCompletedThread::registerUnpresentedCallbackHandle(
return BAD_VALUE;
}
- return addCallbackHandle(handle);
+ return addCallbackHandle(handle, std::vector<JankData>());
}
status_t TransactionCompletedThread::findTransactionStats(
@@ -225,7 +225,8 @@ status_t TransactionCompletedThread::findTransactionStats(
return BAD_VALUE;
}
-status_t TransactionCompletedThread::addCallbackHandle(const sp<CallbackHandle>& handle) {
+status_t TransactionCompletedThread::addCallbackHandle(const sp<CallbackHandle>& handle,
+ const std::vector<JankData>& jankData) {
// If we can't find the transaction stats something has gone wrong. The client should call
// startRegistration before trying to add a callback handle.
TransactionStats* transactionStats;
@@ -246,7 +247,7 @@ status_t TransactionCompletedThread::addCallbackHandle(const sp<CallbackHandle>&
handle->dequeueReadyTime);
transactionStats->surfaceStats.emplace_back(surfaceControl, handle->acquireTime,
handle->previousReleaseFence,
- handle->transformHint, eventStats);
+ handle->transformHint, eventStats, jankData);
}
return NO_ERROR;
}