backends/drm: Undo fade-out effect upon unsuccessful DPMS Off
DrmOutput::setDrmDpmsMode()
already takes care of reverting any
pending output pipeline changes, but the aboutToTurnOff
signal from
setDpmsMode()
needs an explicit wakeUp
signal to cancel it out.
No bug reports immediately stick out for describing this. I can reproduce a black screen locker (woken up only with manual double Esc) like this [edit: on a Wayland dev session]:
- In Screen Locking, set "Lock screen automatically" to 1 minute (the lowest possible) and "Delay before password required" to "Require password immediately".
- In Power Management, set "When locked, turn off screen" also to 1 minute. Or lower if you want.
- Switch to a different session for another user, which denies your dev session access to DPMS changes for your outputs.
- From that session, watch your
journalctl -f
until you see the following lines (first one's red, making it easy to spot) after about a minute:
kwin_wayland[288736]: kwin_wayland_drm: Atomic modeset commit failed! Permission denied
kwin_wayland[288736]: kwin_wayland_drm: Setting dpms mode failed!
- Switch back to your dev session. Screen is black, backlight (if you have one) is still on, cursor can be spotted but nothing else. Controls are operational, you just don't see them because the fade-out from
KscreenEffect
is doing its thing.
The patch avoids the screen going black when switching back to my dev session after the DPMS change failed.
Edited by Jakob Petsovits