diff --git a/plugins/platforms/drm/drm_backend.h b/plugins/platforms/drm/drm_backend.h --- a/plugins/platforms/drm/drm_backend.h +++ b/plugins/platforms/drm/drm_backend.h @@ -170,6 +170,7 @@ void initCursor(); void outputDpmsChanged(); void readOutputsConfiguration(); + void writeOutputsConfiguration(); QByteArray generateOutputConfigurationUuid() const; DrmOutput *findOutput(quint32 connector); DrmOutput *findOutput(const QByteArray &uuid); diff --git a/plugins/platforms/drm/drm_backend.cpp b/plugins/platforms/drm/drm_backend.cpp --- a/plugins/platforms/drm/drm_backend.cpp +++ b/plugins/platforms/drm/drm_backend.cpp @@ -88,6 +88,7 @@ DrmBackend::~DrmBackend() { + writeOutputsConfiguration(); #if HAVE_GBM if (m_gbmDevice) { gbm_device_destroy(m_gbmDevice); @@ -529,6 +530,21 @@ } } +void DrmBackend::writeOutputsConfiguration() +{ + if (m_outputs.isEmpty()) { + return; + } + const QByteArray uuid = generateOutputConfigurationUuid(); + auto configGroup = KSharedConfig::openConfig()->group("DrmOutputs").group(uuid); + // default position goes from left to right + for (auto it = m_outputs.cbegin(); it != m_outputs.cend(); ++it) { + qCDebug(KWIN_DRM) << "Writing output configuration for [" << uuid << "] ["<< (*it)->uuid() << "]"; + auto outputConfig = configGroup.group((*it)->uuid()); + outputConfig.writeEntry("Scale", (*it)->scale()); + } +} + QByteArray DrmBackend::generateOutputConfigurationUuid() const { auto it = m_outputs.constBegin();