From d563bc6c86d398a59409f5ea1ad556d93fb45f78 Mon Sep 17 00:00:00 2001 From: Stefan Hoffmeister Date: Fri, 19 Jan 2024 13:52:28 +0000 Subject: [PATCH] Fix mishandling of output configuration if output monitor EDID is missing This functionally fixes * duplication of output configuration in ~/.config/kwinoutputconfig.json * _wrong_ ouput configuration - in particular the scale - being restored (i.e. scale would never be restored) --- src/outputconfigurationstore.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/outputconfigurationstore.cpp b/src/outputconfigurationstore.cpp index 74ac2be9c3..176c9024f9 100644 --- a/src/outputconfigurationstore.cpp +++ b/src/outputconfigurationstore.cpp @@ -137,10 +137,12 @@ std::optional OutputConfigurationStore::findOutput(Output *output, const return otherOutput != output && otherOutput->edid().identifier() == output->edid().identifier() && otherOutput->mstPath() == output->mstPath(); }); const auto it = std::find_if(m_outputs.begin(), m_outputs.end(), [uniqueEdid, uniqueMst, output](const auto &outputState) { - if (outputState.edidIdentifier != output->edid().identifier()) { - return false; - } else if (uniqueEdid) { - return true; + if (output->edid().isValid()) { + if (outputState.edidIdentifier != output->edid().identifier()) { + return false; + } else if (uniqueEdid) { + return true; + } } if (outputState.mstPath != output->mstPath()) { return false;