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

Commit 73b143c6 authored by Matt Buckley's avatar Matt Buckley
Browse files

Send cached target duration when creating sessions

This fixes an issue where the default target duration was being sent
when re-creating sessions, after the true target duration was already
known. This caused the wrong value in PowerHAL, and no corrective update
was sent because the cached value never changed.

Bug: 301806277
Test: hwuitest
Change-Id: I80d90e855fce92264d8341aad78b19dc547b65f4
Merged-In: I80d90e855fce92264d8341aad78b19dc547b65f4
parent 56916c44
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ void HintSessionWrapper::destroy() {
        mSessionValid = true;
        mHintSession = nullptr;
    }
    mResetsSinceLastReport = 0;
}

bool HintSessionWrapper::init() {
@@ -111,10 +112,10 @@ bool HintSessionWrapper::init() {

    // Use a placeholder target value to initialize,
    // this will always be replaced elsewhere before it gets used
    int64_t defaultTargetDurationNanos = 16666667;
    int64_t targetDurationNanos =
            mLastTargetWorkDuration == 0 ? kDefaultTargetDuration : mLastTargetWorkDuration;
    mHintSessionFuture = CommonPool::async([=, this, tids = std::move(tids)] {
        return mBinding->createSession(manager, tids.data(), tids.size(),
                                       defaultTargetDurationNanos);
        return mBinding->createSession(manager, tids.data(), tids.size(), targetDurationNanos);
    });
    return false;
}
+1 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ private:
    static constexpr nsecs_t kResetHintTimeout = 100_ms;
    static constexpr int64_t kSanityCheckLowerBound = 100_us;
    static constexpr int64_t kSanityCheckUpperBound = 10_s;
    static constexpr int64_t kDefaultTargetDuration = 16666667;

    // Allows easier stub when testing
    class HintSessionBinding {