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

Commit 0c4a70fe authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Merge cherrypicks of [8551866, 8551867, 8551868, 8552336, 8552337, 8552338,...

Merge cherrypicks of [8551866, 8551867, 8551868, 8552336, 8552337, 8552338, 8551869, 8552339, 8552376, 8551887] into qt-c2f2-release

Change-Id: Ic35a97b87844ba1c808faad1102ead0d402f01f1
parents 83dd5ec0 9cacdacb
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -78,6 +78,10 @@ void DispSyncSource::setPhaseOffset(nsecs_t phaseOffset) {
    // Normalize phaseOffset to [-period, period)
    const int numPeriods = phaseOffset / period;
    phaseOffset -= numPeriods * period;
    if (mPhaseOffset == phaseOffset) {
        return;
    }

    mPhaseOffset = phaseOffset;
    tracePhaseOffset();

+2 −1
Original line number Diff line number Diff line
@@ -50,7 +50,8 @@ void LayerInfo::setLastPresentTime(nsecs_t lastPresentTime) {
    // Ignore time diff that are too high - those are stale values
    if (timeDiff > OBSOLETE_TIME_EPSILON_NS.count()) return;
    const nsecs_t refreshDuration = (timeDiff > 0) ? timeDiff : mMinRefreshDuration;
    mRefreshRateHistory.insertRefreshRate(refreshDuration);
    const int fps = 1e9f / refreshDuration;
    mRefreshRateHistory.insertRefreshRate(fps);
}

} // namespace scheduler
+5 −5
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ class LayerInfo {
    public:
        explicit RefreshRateHistory(nsecs_t minRefreshDuration)
              : mMinRefreshDuration(minRefreshDuration) {}
        void insertRefreshRate(nsecs_t refreshRate) {
        void insertRefreshRate(int refreshRate) {
            mElements.push_back(refreshRate);
            if (mElements.size() > HISTORY_SIZE) {
                mElements.pop_front();
@@ -54,13 +54,13 @@ class LayerInfo {
        }

        float getRefreshRateAvg() const {
            nsecs_t refreshDuration = mMinRefreshDuration;
            if (mElements.size() > 0) {
                refreshDuration = scheduler::calculate_mean(mElements);
            if (mElements.empty()) {
                return 1e9f / mMinRefreshDuration;
            }

            return 1e9f / refreshDuration;
            return scheduler::calculate_mean(mElements);
        }

        void clearHistory() { mElements.clear(); }

    private:
+7 −20
Original line number Diff line number Diff line
@@ -129,30 +129,17 @@ void VSyncModulator::updateOffsets() {

void VSyncModulator::updateOffsetsLocked() {
    const Offsets desired = getNextOffsets();
    const Offsets current = mOffsets;

    bool changed = false;
    if (desired.sf != current.sf) {
    if (mSfConnectionHandle != nullptr) {
        mScheduler->setPhaseOffset(mSfConnectionHandle, desired.sf);
        } else if (mSfEventThread != nullptr) {
            mSfEventThread->setPhaseOffset(desired.sf);
    }
        changed = true;
    }
    if (desired.app != current.app) {

    if (mAppConnectionHandle != nullptr) {
        mScheduler->setPhaseOffset(mAppConnectionHandle, desired.app);
        } else if (mAppEventThread != nullptr) {
            mAppEventThread->setPhaseOffset(desired.app);
        }
        changed = true;
    }

    if (changed) {
    flushOffsets();
}
}

void VSyncModulator::flushOffsets() {
    OffsetType type = getNextOffsetType();
+0 −9
Original line number Diff line number Diff line
@@ -68,12 +68,6 @@ public:
    void setPhaseOffsets(Offsets early, Offsets earlyGl, Offsets late,
                         nsecs_t thresholdForNextVsync) EXCLUDES(mMutex);

    // Sets handles to the SF and app event threads.
    void setEventThreads(EventThread* sfEventThread, EventThread* appEventThread) {
        mSfEventThread = sfEventThread;
        mAppEventThread = appEventThread;
    }

    // Sets the scheduler and vsync connection handlers.
    void setSchedulerAndHandles(Scheduler* scheduler,
                                Scheduler::ConnectionHandle* appConnectionHandle,
@@ -121,9 +115,6 @@ private:
    std::unordered_map<OffsetType, Offsets> mOffsetMap GUARDED_BY(mMutex);
    nsecs_t mThresholdForNextVsync;

    EventThread* mSfEventThread = nullptr;
    EventThread* mAppEventThread = nullptr;

    Scheduler* mScheduler = nullptr;
    Scheduler::ConnectionHandle* mAppConnectionHandle = nullptr;
    Scheduler::ConnectionHandle* mSfConnectionHandle = nullptr;
Loading