diff options
| author | 2017-06-01 06:23:36 +0000 | |
|---|---|---|
| committer | 2017-06-01 06:23:36 +0000 | |
| commit | 8c9cc460d7694a8d03fe97eee45c0ed28beaa9d5 (patch) | |
| tree | a65d1b097e66284bbe7cc8487d7d3a12c804900f /libs/gui/Surface.cpp | |
| parent | e2cc7337ccd1afb2fbfc401918648d557be0da3a (diff) | |
| parent | 46b9841653f180f8aa73a3190b4fb5eb5ffb6872 (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.cpp | 12 |
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__); |