diff options
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index ff6660cd73..abf38fa548 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -1000,6 +1000,7 @@ void SurfaceFlinger::setActiveConfigInternal() { } bool SurfaceFlinger::performSetActiveConfig() NO_THREAD_SAFETY_ANALYSIS { + ATRACE_CALL(); // we may be in the process of changing the active state if (mWaitForNextInvalidate) { mWaitForNextInvalidate = false; @@ -1512,6 +1513,7 @@ void SurfaceFlinger::resetDisplayState() { } void SurfaceFlinger::updateVrFlinger() { + ATRACE_CALL(); if (!mVrFlinger) return; bool vrFlingerRequestsDisplay = mVrFlingerRequestsDisplay; @@ -1606,13 +1608,16 @@ void SurfaceFlinger::onMessageReceived(int32_t what) { // of video detection feature. mScheduler->incrementFrameCounter(); } - - bool frameMissed = !mHadClientComposition && mPreviousPresentFence != Fence::NO_FENCE && + bool frameMissed = mPreviousPresentFence != Fence::NO_FENCE && (mPreviousPresentFence->getStatus() == Fence::Status::Unsignaled); - mFrameMissedCount += frameMissed; - ATRACE_INT("FrameMissed", static_cast<int>(frameMissed)); + bool hwcFrameMissed = !mHadClientComposition && frameMissed; if (frameMissed) { + ATRACE_INT("FrameMissed", static_cast<int>(frameMissed)); + mFrameMissedCount++; mTimeStats->incrementMissedFrames(); + } + // For now, only propagate backpressure when missing a hwc frame. + if (hwcFrameMissed) { if (mPropagateBackpressure) { signalLayerUpdate(); break; @@ -1647,6 +1652,7 @@ void SurfaceFlinger::onMessageReceived(int32_t what) { } bool SurfaceFlinger::handleMessageTransaction() { + ATRACE_CALL(); uint32_t transactionFlags = peekTransactionFlags(); // Apply any ready transactions in the queues if there are still transactions that have not been |