Surface: Add LAST_[DE]QUEUE_DURATION queries
Adds support for the NATIVE_WINDOW_LAST_DEQUEUE_DURATION and
NATIVE_WINDOW_LAST_QUEUE_DURATION queries.
Bug: 29413700
Change-Id: Iea4efa208e8390fb2de52d5ad9f083ae91bf50b0
diff --git a/include/gui/Surface.h b/include/gui/Surface.h
index af9dd50..b9ffc49 100644
--- a/include/gui/Surface.h
+++ b/include/gui/Surface.h
@@ -198,7 +198,6 @@
virtual int cancelBuffer(ANativeWindowBuffer* buffer, int fenceFd);
virtual int queueBuffer(ANativeWindowBuffer* buffer, int fenceFd);
virtual int perform(int operation, va_list args);
- virtual int query(int what, int* value) const;
virtual int setSwapInterval(int interval);
virtual int lockBuffer_DEPRECATED(ANativeWindowBuffer* buffer);
@@ -224,6 +223,7 @@
virtual int setAutoRefresh(bool autoRefresh);
virtual int lock(ANativeWindow_Buffer* outBuffer, ARect* inOutDirtyBounds);
virtual int unlockAndPost();
+ virtual int query(int what, int* value) const;
virtual int connect(int api, const sp<IProducerListener>& listener);
virtual int detachNextBuffer(sp<GraphicBuffer>* outBuffer,
@@ -370,6 +370,10 @@
// used to prevent a mismatch between the number of queue/dequeue calls.
bool mSharedBufferHasBeenQueued;
+ // These are used to satisfy the NATIVE_WINDOW_LAST_*_DURATION queries
+ nsecs_t mLastDequeueDuration = 0;
+ nsecs_t mLastQueueDuration = 0;
+
Condition mQueueBufferCondition;
};