diff --git a/autotests/testkwaylandbackend.cpp b/autotests/testkwaylandbackend.cpp --- a/autotests/testkwaylandbackend.cpp +++ b/autotests/testkwaylandbackend.cpp @@ -151,6 +151,7 @@ QVERIFY(output->geometry() != QRectF()); QVERIFY(output->sizeMm() != QSize()); QVERIFY(output->edid() != 0); + QVERIFY(output->preferredModes().size() == 1); QCOMPARE(output->rotation(), Output::None); QVERIFY(!ids.contains(output->id())); ids << output->id(); diff --git a/backends/kwayland/waylandoutput.cpp b/backends/kwayland/waylandoutput.cpp --- a/backends/kwayland/waylandoutput.cpp +++ b/backends/kwayland/waylandoutput.cpp @@ -131,6 +131,7 @@ output->setPos(m_output->globalPosition()); output->setRotation(m_rotationMap[m_output->transform()]); KScreen::ModeList modeList; + QStringList preferredModeIds; m_modeIdMap.clear(); QString currentModeId = QStringLiteral("-1"); Q_FOREACH (const KWayland::Client::OutputDevice::Mode &m, m_output->modes()) { @@ -152,6 +153,9 @@ if (m.flags.testFlag(KWayland::Client::OutputDevice::Mode::Flag::Current)) { currentModeId = modeid; } + if (m.flags.testFlag(KWayland::Client::OutputDevice::Mode::Flag::Preferred)) { + preferredModeIds << modeid; + } // Update the kscreen => kwayland mode id translation map m_modeIdMap.insert(modeid, m.id); // Add to the modelist which gets set on the output @@ -162,6 +166,7 @@ } output->setCurrentModeId(currentModeId); + output->setPreferredModes(preferredModeIds); output->setModes(modeList); output->setScale(m_output->scale()); }