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

Commit 71c8a958 authored by Ady Abraham's avatar Ady Abraham
Browse files

SF: fix a bug with DISPLAY_EVENT_MODE_CHANGE

SF might dispatch a DISPLAY_EVENT_MODE_CHANGE event before changing
the actual mode. This can happen when the mode change takes more than
a single refresh and caused by incorrectly checking the previously
reported event without checking for the current mode.

Bug: 194515308
Bug: 193945763
Test: SF unit tests
Change-Id: Icf44e0fb6aadb76e629cd408907389e2626d2047
Merged-In: Icf44e0fb6aadb76e629cd408907389e2626d2047
parent ae01ea5a
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -386,6 +386,13 @@ void Scheduler::dispatchCachedReportedMode() {
    }

    const auto modeId = *mFeatures.modeId;
    // If the modeId is not the current mode, this means that a
    // mode change is in progress. In that case we shouldn't dispatch an event
    // as it will be dispatched when the current mode changes.
    if (mRefreshRateConfigs.getCurrentRefreshRate().getModeId() != modeId) {
        return;
    }

    const auto vsyncPeriod = mRefreshRateConfigs.getRefreshRateFromModeId(modeId).getVsyncPeriod();

    // If there is no change from cached mode, there is no need to dispatch an event