summaryrefslogtreecommitdiff
path: root/libs/gui/Surface.cpp
diff options
context:
space:
mode:
author Dan Stoza <stoza@google.com> 2017-06-01 06:23:36 +0000
committer android-build-merger <android-build-merger@google.com> 2017-06-01 06:23:36 +0000
commit8c9cc460d7694a8d03fe97eee45c0ed28beaa9d5 (patch)
treea65d1b097e66284bbe7cc8487d7d3a12c804900f /libs/gui/Surface.cpp
parente2cc7337ccd1afb2fbfc401918648d557be0da3a (diff)
parent46b9841653f180f8aa73a3190b4fb5eb5ffb6872 (diff)
libgui: Add Surface::getLastDequeueStartTime am: 932f008485
am: 46b9841653 Change-Id: Id3dd6920b3341c5675b5308a9c80e276a5b03ce2
Diffstat (limited to 'libs/gui/Surface.cpp')
-rw-r--r--libs/gui/Surface.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index d471dbf047..409a3cb076 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -503,13 +503,13 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer, int* fenceFd) {
int buf = -1;
sp<Fence> fence;
- nsecs_t now = systemTime();
+ nsecs_t startTime = systemTime();
FrameEventHistoryDelta frameTimestamps;
status_t result = mGraphicBufferProducer->dequeueBuffer(&buf, &fence,
reqWidth, reqHeight, reqFormat, reqUsage,
enableFrameTimestamps ? &frameTimestamps : nullptr);
- mLastDequeueDuration = systemTime() - now;
+ mLastDequeueDuration = systemTime() - startTime;
if (result < 0) {
ALOGV("dequeueBuffer: IGraphicBufferProducer::dequeueBuffer"
@@ -526,6 +526,9 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer, int* fenceFd) {
Mutex::Autolock lock(mMutex);
+ // Write this while holding the mutex
+ mLastDequeueStartTime = startTime;
+
sp<GraphicBuffer>& gbuf(mSlots[buf].buffer);
// this should never happen
@@ -1711,6 +1714,11 @@ status_t Surface::getUniqueId(uint64_t* outId) const {
return mGraphicBufferProducer->getUniqueId(outId);
}
+nsecs_t Surface::getLastDequeueStartTime() const {
+ Mutex::Autolock lock(mMutex);
+ return mLastDequeueStartTime;
+}
+
status_t Surface::getAndFlushRemovedBuffers(std::vector<sp<GraphicBuffer>>* out) {
if (out == nullptr) {
ALOGE("%s: out must not be null!", __FUNCTION__);