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

Commit 95a0f08e authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 5686022 from 57e20651 to qt-qpr1-release

Change-Id: I5a1a68262b0806cb386e5d814cf09bbc8b6ae8d1
parents e017ec05 57e20651
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -92,8 +92,12 @@ public:
        mPeriod = period;
        if (!mModelLocked && referenceTimeChanged) {
            for (auto& eventListener : mEventListeners) {
                eventListener.mLastEventTime =
                        mReferenceTime - mPeriod + mPhase + eventListener.mPhase;
                eventListener.mLastEventTime = mReferenceTime + mPhase + eventListener.mPhase;
                // If mLastEventTime is after mReferenceTime (can happen when positive phase offsets
                // are used) we treat it as like it happened in previous period.
                if (eventListener.mLastEventTime > mReferenceTime) {
                    eventListener.mLastEventTime -= mPeriod;
                }
            }
        }
        if (mTraceDetailedInfo) {
+14 −15
Original line number Diff line number Diff line
@@ -102,7 +102,7 @@ void VSyncModulator::onRefreshed(bool usedRenderEngine) {

VSyncModulator::Offsets VSyncModulator::getOffsets() {
    std::lock_guard<std::mutex> lock(mMutex);
    return mOffsetMap.at(mOffsetType);
    return mOffsets;
}

VSyncModulator::Offsets VSyncModulator::getNextOffsets() {
@@ -129,13 +129,13 @@ void VSyncModulator::updateOffsets() {

void VSyncModulator::updateOffsetsLocked() {
    const Offsets desired = getNextOffsets();
    const Offsets current = mOffsetMap.at(mOffsetType);
    const Offsets current = mOffsets;

    bool changed = false;
    if (desired.sf != current.sf) {
        if (mSfConnectionHandle != nullptr) {
            mScheduler->setPhaseOffset(mSfConnectionHandle, desired.sf);
        } else {
        } else if (mSfEventThread != nullptr) {
            mSfEventThread->setPhaseOffset(desired.sf);
        }
        changed = true;
@@ -143,36 +143,35 @@ void VSyncModulator::updateOffsetsLocked() {
    if (desired.app != current.app) {
        if (mAppConnectionHandle != nullptr) {
            mScheduler->setPhaseOffset(mAppConnectionHandle, desired.app);
        } else {
        } else if (mAppEventThread != nullptr) {
            mAppEventThread->setPhaseOffset(desired.app);
        }
        changed = true;
    }

    if (changed) {
        updateOffsetType();
        flushOffsets();
    }
}

void VSyncModulator::updateOffsetType() {
    mOffsetType = getNextOffsetType();
void VSyncModulator::flushOffsets() {
    OffsetType type = getNextOffsetType();
    mOffsets = mOffsetMap.at(type);
    if (!mTraceDetailedInfo) {
        return;
    }
    OffsetType type = mOffsetType;
    Offsets offsets = mOffsetMap.at(type);
    ATRACE_INT("Vsync-EarlyOffsetsOn",
               offsets.fpsMode == RefreshRateType::DEFAULT && type == OffsetType::Early);
               mOffsets.fpsMode == RefreshRateType::DEFAULT && type == OffsetType::Early);
    ATRACE_INT("Vsync-EarlyGLOffsetsOn",
               offsets.fpsMode == RefreshRateType::DEFAULT && type == OffsetType::EarlyGl);
               mOffsets.fpsMode == RefreshRateType::DEFAULT && type == OffsetType::EarlyGl);
    ATRACE_INT("Vsync-LateOffsetsOn",
               offsets.fpsMode == RefreshRateType::DEFAULT && type == OffsetType::Late);
               mOffsets.fpsMode == RefreshRateType::DEFAULT && type == OffsetType::Late);
    ATRACE_INT("Vsync-HighFpsEarlyOffsetsOn",
               offsets.fpsMode == RefreshRateType::PERFORMANCE && type == OffsetType::Early);
               mOffsets.fpsMode == RefreshRateType::PERFORMANCE && type == OffsetType::Early);
    ATRACE_INT("Vsync-HighFpsEarlyGLOffsetsOn",
               offsets.fpsMode == RefreshRateType::PERFORMANCE && type == OffsetType::EarlyGl);
               mOffsets.fpsMode == RefreshRateType::PERFORMANCE && type == OffsetType::EarlyGl);
    ATRACE_INT("Vsync-HighFpsLateOffsetsOn",
               offsets.fpsMode == RefreshRateType::PERFORMANCE && type == OffsetType::Late);
               mOffsets.fpsMode == RefreshRateType::PERFORMANCE && type == OffsetType::Late);
}

} // namespace android
+3 −3
Original line number Diff line number Diff line
@@ -114,8 +114,8 @@ private:
    // Updates offsets and persists them into the scheduler framework.
    void updateOffsets() EXCLUDES(mMutex);
    void updateOffsetsLocked() REQUIRES(mMutex);
    // Updates the internal offset type.
    void updateOffsetType() REQUIRES(mMutex);
    // Updates the internal offsets and offset type.
    void flushOffsets() REQUIRES(mMutex);

    mutable std::mutex mMutex;
    std::unordered_map<OffsetType, Offsets> mOffsetMap GUARDED_BY(mMutex);
@@ -128,7 +128,7 @@ private:
    Scheduler::ConnectionHandle* mAppConnectionHandle = nullptr;
    Scheduler::ConnectionHandle* mSfConnectionHandle = nullptr;

    OffsetType mOffsetType GUARDED_BY(mMutex) = OffsetType::Late;
    Offsets mOffsets GUARDED_BY(mMutex) = {Scheduler::RefreshRateType::DEFAULT, 0, 0};

    std::atomic<Scheduler::TransactionStart> mTransactionStart =
            Scheduler::TransactionStart::NORMAL;
+5 −0
Original line number Diff line number Diff line
@@ -5665,6 +5665,11 @@ status_t SurfaceFlinger::captureScreen(uint64_t displayOrLayerStack, Dataspace*

        captureOrientation = fromSurfaceComposerRotation(
                static_cast<ISurfaceComposer::Rotation>(display->getOrientation()));
        if (captureOrientation == ui::Transform::orientation_flags::ROT_90) {
            captureOrientation = ui::Transform::orientation_flags::ROT_270;
        } else if (captureOrientation == ui::Transform::orientation_flags::ROT_270) {
            captureOrientation = ui::Transform::orientation_flags::ROT_90;
        }
        *outDataspace =
                pickDataspaceFromColorMode(display->getCompositionDisplay()->getState().colorMode);
    }