diff --git a/kded/serializer.h b/kded/serializer.h --- a/kded/serializer.h +++ b/kded/serializer.h @@ -36,7 +36,6 @@ static bool moveConfig(const QString &srcId, const QString &destId); static KScreen::OutputPtr findOutput(const KScreen::ConfigPtr &config, const QVariantMap &info); - static QString outputId(const KScreen::OutputPtr &output); static QVariantMap metadata(const KScreen::OutputPtr &output); static void setConfigPath(const QString &path); diff --git a/kded/serializer.cpp b/kded/serializer.cpp --- a/kded/serializer.cpp +++ b/kded/serializer.cpp @@ -57,25 +57,7 @@ if (!config) { return QString(); } - KScreen::OutputList outputs = config->outputs(); - - QStringList hashList; - //qCDebug(KSCREEN_KDED) << "Calculating config ID for" << currentConfig.data(); - Q_FOREACH(const KScreen::OutputPtr &output, outputs) { - if (!output->isConnected()) { - continue; - } - - //qCDebug(KSCREEN_KDED) << "\tPart of the Id: " << Serializer::outputId(output); - hashList.insert(0, Serializer::outputId(output)); - } - - qSort(hashList.begin(), hashList.end()); - - const QByteArray hash = QCryptographicHash::hash(hashList.join(QString()).toLatin1(), - QCryptographicHash::Md5).toHex(); - //qCDebug(KSCREEN_KDED) << "\tConfig ID:" << hash; - return QString::fromLatin1(hash); + return config->connectedOutputsHash(); } bool Serializer::configExists(const KScreen::ConfigPtr &config) @@ -155,7 +137,7 @@ QVariantMap info; - info[QStringLiteral("id")] = Serializer::outputId(output); + info[QStringLiteral("id")] = output->hash(); info[QStringLiteral("primary")] = output->isPrimary(); info[QStringLiteral("enabled")] = output->isEnabled(); info[QStringLiteral("rotation")] = output->rotation(); @@ -228,7 +210,7 @@ QStringList allIds; allIds.reserve(outputs.count()); Q_FOREACH (const KScreen::OutputPtr &output, outputs) { - const auto outputId = Serializer::outputId(output); + const auto outputId = output->hash(); if (allIds.contains(outputId) && !duplicateIds.contains(outputId)) { duplicateIds << outputId; } @@ -240,7 +222,7 @@ if (!output->isConnected()) { continue; } - const auto outputId = Serializer::outputId(output); + const auto outputId = output->hash(); if (outputId != info[QStringLiteral("id")].toString()) { continue; } @@ -311,15 +293,6 @@ return KScreen::OutputPtr(); } -QString Serializer::outputId(const KScreen::OutputPtr &output) -{ - if (output->edid() && output->edid()->isValid()) { - return output->edid()->hash(); - } - - return output->name(); -} - QVariantMap Serializer::metadata(const KScreen::OutputPtr &output) { QVariantMap metadata; diff --git a/tests/kded/serializertest.cpp b/tests/kded/serializertest.cpp --- a/tests/kded/serializertest.cpp +++ b/tests/kded/serializertest.cpp @@ -365,7 +365,7 @@ QCOMPARE(config->connectedOutputs().count(), 6); Q_FOREACH (auto output, config->connectedOutputs()) { QVERIFY(positions.keys().contains(output->name())); - QVERIFY(output->name() != Serializer::outputId(output)); + QVERIFY(output->name() != output->hash()); QCOMPARE(positions[output->name()], output->pos()); QCOMPARE(output->currentMode()->size(), QSize(1920, 1080)); QCOMPARE(output->currentMode()->refreshRate(), 60.0);