Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c6c6d99a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "SF: BufferLayer::onPostComposition display might be nullptr" into sc-v2-dev

parents e1a7dd7c 39d5eeb5
Loading
Loading
Loading
Loading
+28 −26
Original line number Original line Diff line number Diff line
@@ -421,8 +421,10 @@ bool BufferLayer::onPostComposition(const DisplayDevice* display,
        mFrameTracker.setFrameReadyTime(desiredPresentTime);
        mFrameTracker.setFrameReadyTime(desiredPresentTime);
    }
    }


    if (display) {
        const Fps refreshRate = display->refreshRateConfigs().getCurrentRefreshRate().getFps();
        const Fps refreshRate = display->refreshRateConfigs().getCurrentRefreshRate().getFps();
    const std::optional<Fps> renderRate = mFlinger->mScheduler->getFrameRateOverride(getOwnerUid());
        const std::optional<Fps> renderRate =
                mFlinger->mScheduler->getFrameRateOverride(getOwnerUid());
        if (presentFence->isValid()) {
        if (presentFence->isValid()) {
            mFlinger->mTimeStats->setPresentFence(layerId, mCurrentFrameNumber, presentFence,
            mFlinger->mTimeStats->setPresentFence(layerId, mCurrentFrameNumber, presentFence,
                                                  refreshRate, renderRate,
                                                  refreshRate, renderRate,
@@ -430,10 +432,9 @@ bool BufferLayer::onPostComposition(const DisplayDevice* display,
                                                          mDrawingState.frameRate),
                                                          mDrawingState.frameRate),
                                                  getGameMode());
                                                  getGameMode());
            mFlinger->mFrameTracer->traceFence(layerId, getCurrentBufferId(), mCurrentFrameNumber,
            mFlinger->mFrameTracer->traceFence(layerId, getCurrentBufferId(), mCurrentFrameNumber,
                                           presentFence, FrameTracer::FrameEvent::PRESENT_FENCE);
                                               presentFence,
                                               FrameTracer::FrameEvent::PRESENT_FENCE);
            mFrameTracker.setActualPresentFence(std::shared_ptr<FenceTime>(presentFence));
            mFrameTracker.setActualPresentFence(std::shared_ptr<FenceTime>(presentFence));
    } else if (!display) {
        // Do nothing.
        } else if (const auto displayId = PhysicalDisplayId::tryCast(display->getId());
        } else if (const auto displayId = PhysicalDisplayId::tryCast(display->getId());
                   displayId && mFlinger->getHwComposer().isConnected(*displayId)) {
                   displayId && mFlinger->getHwComposer().isConnected(*displayId)) {
            // The HWC doesn't support present fences, so use the refresh
            // The HWC doesn't support present fences, so use the refresh
@@ -444,11 +445,12 @@ bool BufferLayer::onPostComposition(const DisplayDevice* display,
                                                 frameRateToSetFrameRateVotePayload(
                                                 frameRateToSetFrameRateVotePayload(
                                                         mDrawingState.frameRate),
                                                         mDrawingState.frameRate),
                                                 getGameMode());
                                                 getGameMode());
        mFlinger->mFrameTracer->traceTimestamp(layerId, getCurrentBufferId(), mCurrentFrameNumber,
            mFlinger->mFrameTracer->traceTimestamp(layerId, getCurrentBufferId(),
                                               actualPresentTime,
                                                   mCurrentFrameNumber, actualPresentTime,
                                                   FrameTracer::FrameEvent::PRESENT_FENCE);
                                                   FrameTracer::FrameEvent::PRESENT_FENCE);
            mFrameTracker.setActualPresentTime(actualPresentTime);
            mFrameTracker.setActualPresentTime(actualPresentTime);
        }
        }
    }


    mFrameTracker.advanceFrame();
    mFrameTracker.advanceFrame();
    mBufferInfo.mFrameLatencyNeeded = false;
    mBufferInfo.mFrameLatencyNeeded = false;