effects/kscreen: don't stop effect when fade out animation is done

The screen needs to stay black until it gets enabled again, otherwise
slight timing differences can cause the screen to turn on full brightness
again immediately before turning off.

BUG: 460902
This commit is contained in:
Xaver Hugl 2022-10-25 16:55:23 +02:00
parent a4cb0e7fd8
commit f6d14f1b44
2 changed files with 5 additions and 3 deletions

View file

@ -241,10 +241,10 @@ void DrmOutput::setDpmsMode(DpmsMode mode)
}
} else {
m_gpu->platform()->checkOutputsAreOn();
m_turnOffTimer.stop();
if (mode != dpmsMode() && setDrmDpmsMode(mode)) {
if (m_turnOffTimer.isActive() || (mode != dpmsMode() && setDrmDpmsMode(mode))) {
Q_EMIT wakeUp();
}
m_turnOffTimer.stop();
}
}

View file

@ -102,7 +102,9 @@ void KscreenEffect::prePaintScreen(ScreenPrePaintData &data, std::chrono::millis
state.m_timeLine.advance(presentTime);
if (state.m_timeLine.done()) {
switchState(state);
m_waylandStates.remove(data.screen);
if (state.m_state == StateNormal) {
m_waylandStates.remove(data.screen);
}
}
}
}