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

Commit 4b6f6059 authored by Leon Scroggins's avatar Leon Scroggins Committed by Android (Google) Code Review
Browse files

Merge "Cleanup Scheduler::initVsync" into main

parents 424c520d a7be94ea
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ void MessageQueue::vsyncCallback(nsecs_t vsyncTime, nsecs_t targetWakeupTime, ns
    mHandler->dispatchFrame(vsyncId, expectedVsyncTime);
}

void MessageQueue::initVsync(std::shared_ptr<scheduler::VSyncDispatch> dispatch,
void MessageQueue::initVsyncInternal(std::shared_ptr<scheduler::VSyncDispatch> dispatch,
                                     frametimeline::TokenManager& tokenManager,
                                     std::chrono::nanoseconds workDuration) {
    std::unique_ptr<scheduler::VSyncCallbackRegistration> oldRegistration;
@@ -87,7 +87,7 @@ void MessageQueue::initVsync(std::shared_ptr<scheduler::VSyncDispatch> dispatch,
    }

    // See comments in onNewVsyncSchedule. Today, oldRegistration should be
    // empty, but nothing prevents us from calling initVsync multiple times, so
    // empty, but nothing prevents us from calling initVsyncInternal multiple times, so
    // go ahead and destruct it outside the lock for safety.
    oldRegistration.reset();
}
+5 −4
Original line number Diff line number Diff line
@@ -65,7 +65,8 @@ class MessageQueue {
public:
    virtual ~MessageQueue() = default;

    virtual void initVsync(std::shared_ptr<scheduler::VSyncDispatch>, frametimeline::TokenManager&,
    virtual void initVsyncInternal(std::shared_ptr<scheduler::VSyncDispatch>,
                                   frametimeline::TokenManager&,
                                   std::chrono::nanoseconds workDuration) = 0;
    virtual void destroyVsync() = 0;
    virtual void setDuration(std::chrono::nanoseconds workDuration) = 0;
@@ -137,7 +138,7 @@ private:
public:
    explicit MessageQueue(ICompositor&);

    void initVsync(std::shared_ptr<scheduler::VSyncDispatch>, frametimeline::TokenManager&,
    void initVsyncInternal(std::shared_ptr<scheduler::VSyncDispatch>, frametimeline::TokenManager&,
                           std::chrono::nanoseconds workDuration) override;
    void destroyVsync() override;
    void setDuration(std::chrono::nanoseconds workDuration) override;
+5 −0
Original line number Diff line number Diff line
@@ -96,6 +96,11 @@ Scheduler::~Scheduler() {
    demotePacesetterDisplay();
}

void Scheduler::initVsync(frametimeline::TokenManager& tokenManager,
                          std::chrono::nanoseconds workDuration) {
    Impl::initVsyncInternal(getVsyncSchedule()->getDispatch(), tokenManager, workDuration);
}

void Scheduler::startTimers() {
    using namespace sysprop;
    using namespace std::string_literals;
+1 −1
Original line number Diff line number Diff line
@@ -131,7 +131,7 @@ public:

    void run();

    using Impl::initVsync;
    void initVsync(frametimeline::TokenManager&, std::chrono::nanoseconds workDuration);

    using Impl::getScheduledFrameTime;
    using Impl::setDuration;
+1 −2
Original line number Diff line number Diff line
@@ -4233,8 +4233,7 @@ void SurfaceFlinger::initScheduler(const sp<const DisplayDevice>& display) {
                                          /* workDuration */ activeRefreshRate.getPeriod(),
                                          /* readyDuration */ configs.late.sfWorkDuration);

    mScheduler->initVsync(mScheduler->getVsyncSchedule()->getDispatch(),
                          *mFrameTimeline->getTokenManager(), configs.late.sfWorkDuration);
    mScheduler->initVsync(*mFrameTimeline->getTokenManager(), configs.late.sfWorkDuration);

    mRegionSamplingThread =
            sp<RegionSamplingThread>::make(*this,
Loading