https://bugs.kde.org/show_bug.cgi?id=520098

Michael Wheatland <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #9 from Michael Wheatland <[email protected]> ---
The `replication source:1` reported here looks like libkscreen mis-resolving
the
"no replication" sentinel rather than KWin actually setting a replica.

`backends/kwayland/waylandoutputdevice.cpp:212-219` resolves the replication
source by comparing every output's UUID against `m_replicationSource`, which is
an
empty string when nothing is mirrored, with no guard for that:

```cpp
int replicationSourceId = 0;
for (auto it = outputMap.begin(); it != outputMap.end(); it++) {
    if (it.value()->uuid() == m_replicationSource) {
        replicationSourceId = it.key();
        break;
    }
}
```

An output KWin failed to configure has an empty UUID, so the empty sentinel
matches it and every output is reported as a replica of it. That would explain
why
the value here is exactly the id of the display that got disabled by the lid
close, rather than an arbitrary number.

I hit the same signature from the other direction on 6.6.6: four connected
outputs
on a three-pipe Intel Lunar Lake iGPU, the undriveable output is #4, and every
output reports `replication source:4` with `clones=[]` on all four.

The knock-on is worse than the Spectacle symptom. kscreen's KCM filters on
`isEnabled() && replicationSource() == 0` (`kcm/kcm.cpp:383`) and clears
`m_configNeedsSave` when the filter matches nothing, so Display & Monitor
reports
that all displays are disabled and Apply stops working — the GUI can no longer
be
used to undo the state.

Filed against libkscreen with a proposed guard:
https://bugs.kde.org/show_bug.cgi?id=526366. The code is
unchanged on `master` and `Plasma/6.7`, so this part is not fixed in 6.7 even
though the Spectacle symptom is.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to