diff options
Diffstat (limited to 'libs/gui/BufferQueueProducer.cpp')
-rw-r--r-- | libs/gui/BufferQueueProducer.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index 75198d7c8b..39b9a0b480 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -762,6 +762,8 @@ status_t BufferQueueProducer::queueBuffer(int slot, return BAD_VALUE; } + auto acquireFenceTime = std::make_shared<FenceTime>(acquireFence); + switch (scalingMode) { case NATIVE_WINDOW_SCALING_MODE_FREEZE: case NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW: @@ -858,6 +860,7 @@ status_t BufferQueueProducer::queueBuffer(int slot, item.mFrameNumber = currentFrameNumber; item.mSlot = slot; item.mFence = acquireFence; + item.mFenceTime = acquireFenceTime; item.mIsDroppable = mCore->mAsyncMode || mCore->mDequeueBufferCannotBlock || (mCore->mSharedBufferMode && mCore->mSharedBufferSlot == slot); @@ -969,7 +972,7 @@ status_t BufferQueueProducer::queueBuffer(int slot, // small trade-off in favor of latency rather than throughput. mLastQueueBufferFence->waitForever("Throttling EGL Production"); } - mLastQueueBufferFence = acquireFence; + mLastQueueBufferFence = std::move(acquireFence); mLastQueuedCrop = item.mCrop; mLastQueuedTransform = item.mTransform; @@ -979,7 +982,7 @@ status_t BufferQueueProducer::queueBuffer(int slot, currentFrameNumber, postedTime, requestedPresentTimestamp, - acquireFence + std::move(acquireFenceTime) }; addAndGetFrameTimestamps(&newFrameEventsEntry, getFrameTimestamps ? &output->frameTimestamps : nullptr); |