diff options
| -rw-r--r-- | services/surfaceflinger/BufferQueueLayer.cpp | 7 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 12 |
2 files changed, 8 insertions, 11 deletions
diff --git a/services/surfaceflinger/BufferQueueLayer.cpp b/services/surfaceflinger/BufferQueueLayer.cpp index cdcbcd94f4..5a60fcd306 100644 --- a/services/surfaceflinger/BufferQueueLayer.cpp +++ b/services/surfaceflinger/BufferQueueLayer.cpp @@ -237,10 +237,14 @@ status_t BufferQueueLayer::updateTexImage(bool& recomputeVisibleRegions, nsecs_t getProducerStickyTransform() != 0, mName.string(), mOverrideScalingMode, getTransformToDisplayInverse(), mFreezeGeometryUpdates); - const nsecs_t expectedPresentTime = mFlinger->mUseScheduler + nsecs_t expectedPresentTime = mFlinger->mUseScheduler ? mFlinger->mScheduler->expectedPresentTime() : mFlinger->mPrimaryDispSync->expectedPresentTime(); + if (isRemovedFromCurrentState()) { + expectedPresentTime = 0; + } + // updateTexImage() below might drop the some buffers at the head of the queue if there is a // buffer behind them which is timely to be presented. However this buffer may not be signaled // yet. The code below makes sure that this wouldn't happen by setting maxFrameNumber to the @@ -259,6 +263,7 @@ status_t BufferQueueLayer::updateTexImage(bool& recomputeVisibleRegions, nsecs_t } const uint64_t maxFrameNumberToAcquire = std::min(mLastFrameNumberReceived.load(), lastSignaledFrameNumber); + status_t updateResult = mConsumer->updateTexImage(&r, expectedPresentTime, &mAutoRefresh, &queuedBuffer, maxFrameNumberToAcquire, releaseFence); diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 3abd6a7ce5..1296177c5e 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -3156,16 +3156,8 @@ void SurfaceFlinger::updateCursorAsync() void SurfaceFlinger::latchAndReleaseBuffer(const sp<Layer>& layer) { if (layer->hasReadyFrame()) { - nsecs_t expectedPresentTime; - if (mUseScheduler) { - expectedPresentTime = mScheduler->expectedPresentTime(); - } else { - expectedPresentTime = mPrimaryDispSync->expectedPresentTime(); - } - if (layer->shouldPresentNow(expectedPresentTime)) { - bool ignored = false; - layer->latchBuffer(ignored, systemTime(), Fence::NO_FENCE); - } + bool ignored = false; + layer->latchBuffer(ignored, systemTime(), Fence::NO_FENCE); } layer->releasePendingBuffer(systemTime()); } |