diff --git a/src/backendmanager.cpp b/src/backendmanager.cpp --- a/src/backendmanager.cpp +++ b/src/backendmanager.cpp @@ -244,6 +244,7 @@ //qCDebug(KSCREEN) << "Connecting ConfigMonitor to backend."; ConfigMonitor::instance()->connectInProcessBackend(backend); m_inProcessBackend = qMakePair(backend, arguments); + setConfig(backend->config()); return backend; } diff --git a/src/configmonitor.cpp b/src/configmonitor.cpp --- a/src/configmonitor.cpp +++ b/src/configmonitor.cpp @@ -167,7 +167,6 @@ void ConfigMonitor::Private::updateConfigs(const KScreen::ConfigPtr &newConfig) { - Q_ASSERT(BackendManager::instance()->method() == BackendManager::OutOfProcess); QMutableListIterator> iter(watchedConfigs); while (iter.hasNext()) { KScreen::ConfigPtr config = iter.next().toStrongRef(); @@ -247,10 +246,8 @@ if (config.isNull()) { return; } - const QWeakPointer weakConfig = config.toWeakRef(); - if (d->watchedConfigs.contains(weakConfig)) { - emit configurationChanged(); - } + qCDebug(KSCREEN) << "Backend change!" << config; + d->updateConfigs(config); }); } diff --git a/src/getconfigoperation.cpp b/src/getconfigoperation.cpp --- a/src/getconfigoperation.cpp +++ b/src/getconfigoperation.cpp @@ -171,8 +171,7 @@ Q_D(GetConfigOperation); if (BackendManager::instance()->method() == BackendManager::InProcess) { auto backend = d->loadBackend(); - d->config = backend->config(); - KScreen::BackendManager::instance()->setConfig(d->config); + d->config = backend->config()->clone(); d->loadEdid(backend); emitResult(); } else {