OutputOrderWatcher: save disabled screens from xrandr
Reason for the change
QGuiApplication::screens()
might still contain the disabled screens,
which will cause the screen list in ScreenPool doesn't match QGuiApplication::screens()
, as can be seen in the assert message from bug 490746.
$ journalctl -b --user /usr/bin/plasmashell
lip 24 10:52:18 beton plasmashell[3503]: ASSERT failure in void ScreenPool::screenInvariants(): "ScreenPool ( 0x566d39462ff0 ) Internal state:
Screen Order: QList(QScreen(0x566d3914d400, name="DP-1"))
"Fake" screens: QSet()
Redundant screens covered by other ones: QHash()
All screens, ordered by size: QList(QScreen(0x566d3914d400, name="DP-1"))
All screen that QGuiApplication knows: QList(QScreen(0x566d3914d390, name="eDP-1"), QScreen(0x566d3914d400, name="DP-1"))
", file ./shell/screenpool.cpp, line 375
lip 24 10:52:19 beton plasmashell[3504]: ASSERT failure in void ScreenPool::screenInvariants(): "ScreenPool ( 0x5c898601bb30 ) Internal state:
Screen Order: QList(QScreen(0x5c8985d23400, name="DP-1"))
"Fake" screens: QSet()
Redundant screens covered by other ones: QHash()
All screens, ordered by size: QList(QScreen(0x5c8985d23400, name="DP-1"))
All screen that QGuiApplication knows: QList(QScreen(0x5c8985d23390, name="eDP-1"), QScreen(0x5c8985d23400, name="DP-1"))
", file ./shell/screenpool.cpp, line 375
Test plan
It seems to be very racey. I cannot reproduce it.
Screenshots or screen recordings
Bugs fixed
BUG: 490746 BUG: 464377 FIXED-IN: 6.1.4