summaryrefslogtreecommitdiff
path: root/libs/gui/Surface.cpp
diff options
context:
space:
mode:
author Alec Mouri <alecmouri@google.com> 2019-08-31 01:54:33 -0700
committer Alec Mouri <alecmouri@google.com> 2019-09-06 11:43:42 -0700
commit72670c57aa1a158ab05055d65a618307d57bf154 (patch)
tree2a4e3920ca714494356be0451188641cc0c9d54f /libs/gui/Surface.cpp
parent04fdb60d01038d4d1e82b4c71f9bd3e9c74cb031 (diff)
[ANativeWindow] Increase precision for duration queries.
Use perform() instead in query() to retrieve dequeue/queue durations for nanosecond resolution. Bug: 137012798 Test: atest Change-Id: I894a8784f3321d4ab6f538d7e7fc1457de26f289
Diffstat (limited to 'libs/gui/Surface.cpp')
-rw-r--r--libs/gui/Surface.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index fb9d7427d7..e490d6d17d 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -1087,6 +1087,12 @@ int Surface::perform(int operation, va_list args)
case NATIVE_WINDOW_SET_DEQUEUE_TIMEOUT:
res = dispatchSetDequeueTimeout(args);
break;
+ case NATIVE_WINDOW_GET_LAST_DEQUEUE_DURATION:
+ res = dispatchGetLastDequeueDuration(args);
+ break;
+ case NATIVE_WINDOW_GET_LAST_QUEUE_DURATION:
+ res = dispatchGetLastQueueDuration(args);
+ break;
default:
res = NAME_NOT_FOUND;
break;
@@ -1303,6 +1309,18 @@ int Surface::dispatchSetDequeueTimeout(va_list args) {
return setDequeueTimeout(timeout);
}
+int Surface::dispatchGetLastDequeueDuration(va_list args) {
+ int64_t* lastDequeueDuration = va_arg(args, int64_t*);
+ *lastDequeueDuration = mLastDequeueDuration;
+ return NO_ERROR;
+}
+
+int Surface::dispatchGetLastQueueDuration(va_list args) {
+ int64_t* lastQueueDuration = va_arg(args, int64_t*);
+ *lastQueueDuration = mLastQueueDuration;
+ return NO_ERROR;
+}
+
bool Surface::transformToDisplayInverse() {
return (mTransform & NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY) ==
NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY;