diff --git a/console/console.cpp b/console/console.cpp --- a/console/console.cpp +++ b/console/console.cpp @@ -101,6 +101,7 @@ qDebug() << "Rotation: " << output->rotation(); qDebug() << "Pos: " << output->pos(); qDebug() << "MMSize: " << output->sizeMm(); + qDebug() << "FollowPreferredMode: " << output->followPreferredMode(); if (output->currentMode()) { qDebug() << "Size: " << output->size(); } diff --git a/kded/daemon.cpp b/kded/daemon.cpp --- a/kded/daemon.cpp +++ b/kded/daemon.cpp @@ -224,7 +224,6 @@ void KScreenDaemon::applyIdealConfig() { - if (m_monitoredConfig->connectedOutputs().count() < 2) { m_osdManager->hideOsd(); doApplyConfig(Generator::self()->idealConfig(m_monitoredConfig)); @@ -254,8 +253,8 @@ // Modes may have changed, fix-up current mode id bool changed = false; Q_FOREACH(const KScreen::OutputPtr &output, m_monitoredConfig->outputs()) { - if (output->isConnected() && output->isEnabled() && output->currentMode().isNull()) { - qCDebug(KSCREEN_KDED) << "Current mode" << output->currentModeId() << "invalid, setting preferred mode" << output->preferredModeId(); + if (output->isConnected() && output->isEnabled() && (output->currentMode().isNull() || (output->followPreferredMode() && output->currentModeId() != output->preferredModeId()))) { + qCDebug(KSCREEN_KDED) << "Current mode was" << output->currentModeId() << ", setting preferred mode" << output->preferredModeId(); output->setCurrentModeId(output->preferredModeId()); changed = true; }