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

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

Merge "SF: correct runaway RegionSamplingThread timer"

parents 336e2712 bf7632e8
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -98,6 +98,9 @@ private:

        {
            std::lock_guard<std::mutex> lk(mMutex);
            if (mStopped) {
                return;
            }
            auto const schedule_result = mRegistration.schedule(calculateWorkload(), vsynctime);
            LOG_ALWAYS_FATAL_IF((schedule_result != ScheduleResult::Scheduled),
                                "Error rescheduling callback: rc %X", schedule_result);
+24 −0
Original line number Diff line number Diff line
@@ -534,6 +534,30 @@ TEST_F(VSyncReactorTest, eventListenersRemovedOnDestruction) {
    mReactor.addEventListener(mName, mPhase, &outerCb, lastCallbackTime);
}

// b/149221293
TEST_F(VSyncReactorTest, selfRemovingEventListenerStopsCallbacks) {
    class SelfRemovingCallback : public DispSync::Callback {
    public:
        SelfRemovingCallback(VSyncReactor& vsr) : mVsr(vsr) {}
        void onDispSyncEvent(nsecs_t when) final { mVsr.removeEventListener(this, &when); }

    private:
        VSyncReactor& mVsr;
    } selfRemover(mReactor);

    Sequence seq;
    EXPECT_CALL(*mMockDispatch, registerCallback(_, std::string(mName)))
            .InSequence(seq)
            .WillOnce(DoAll(SaveArg<0>(&innerCb), Return(mFakeToken)));
    EXPECT_CALL(*mMockDispatch, schedule(mFakeToken, computeWorkload(period, mPhase), mFakeNow))
            .InSequence(seq);
    EXPECT_CALL(*mMockDispatch, cancel(mFakeToken)).Times(2).InSequence(seq);
    EXPECT_CALL(*mMockDispatch, unregisterCallback(mFakeToken)).InSequence(seq);

    mReactor.addEventListener(mName, mPhase, &selfRemover, lastCallbackTime);
    innerCb(0, 0);
}

TEST_F(VSyncReactorTest, addEventListenerChangePeriod) {
    Sequence seq;
    EXPECT_CALL(*mMockDispatch, registerCallback(_, std::string(mName)))