[plasma/powerdevil] daemon/controllers: daemon/controllers: remove supportsDimmingMultiplier

Xaver Hugl <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 5a4b07f139376f2add4ddf9a325f98e9657b4519 by Xaver Hugl.
Committed on 18/08/2026 at 12:38.
Pushed by zamundaaa into branch 'master'.

daemon/controllers: remove supportsDimmingMultiplier

Only KWin brightness control is supported, which always supports
dimming. This simplifies some code.

M  +0    -5    daemon/controllers/displaybrightness.cpp
M  +0    -9    daemon/controllers/displaybrightness.h
M  +0    -5    daemon/controllers/kwinbrightness.cpp
M  +0    -1    daemon/controllers/kwinbrightness.h
M  +4    -57   daemon/controllers/screenbrightnesscontroller.cpp
M  +0    -7    daemon/controllers/screenbrightnesscontroller.h

https://invent.kde.org/plasma/powerdevil/-/commit/5a4b07f139376f2add4ddf9a325f98e9657b4519

diff --git a/daemon/controllers/displaybrightness.cpp b/daemon/controllers/displaybrightness.cpp
index cde735635..d7b4c4670 100644
--- a/daemon/controllers/displaybrightness.cpp
+++ b/daemon/controllers/displaybrightness.cpp
@@ -31,11 +31,6 @@ bool DisplayBrightness::usesDdcCi() const
     return false;
 }
 
-bool DisplayBrightness::supportsDimmingMultiplier() const
-{
-    return false;
-}
-
 void DisplayBrightness::setDimmingMultiplier(double)
 {
 }
diff --git a/daemon/controllers/displaybrightness.h b/daemon/controllers/displaybrightness.h
index 4471cf067..c29a259b5 100644
--- a/daemon/controllers/displaybrightness.h
+++ b/daemon/controllers/displaybrightness.h
@@ -68,19 +68,10 @@ public:
      */
     virtual bool usesDdcCi() const;
 
-    /**
-     * Returns false by default. Override to return true if the display device can set a dimming
-     * multiplier independently of the brightness() itself. If this is supported,
-     * setDimmingMultiplier() must be overridden as well.
-     */
-    virtual bool supportsDimmingMultiplier() const;
-
     /**
      * Set a dimming multiplier between 0.0 and 1.0 to scale down display brightness temporarily,
      * without affecting the value returned by brightness(). It is not assumed that this value will
      * persist across disconnection or reboot scenarios.
-     *
-     * Must be implemented if supportsDimmingMultiplier() returns true, otherwise never called.
      */
     virtual void setDimmingMultiplier(double multiplier);
 
diff --git a/daemon/controllers/kwinbrightness.cpp b/daemon/controllers/kwinbrightness.cpp
index 44d8382c2..b63fd8de4 100644
--- a/daemon/controllers/kwinbrightness.cpp
+++ b/daemon/controllers/kwinbrightness.cpp
@@ -206,11 +206,6 @@ void KWinDisplayBrightness::setConfigOperationDone()
     }
 }
 
-bool KWinDisplayBrightness::supportsDimmingMultiplier() const
-{
-    return true;
-}
-
 void KWinDisplayBrightness::setDimmingMultiplier(double multiplier)
 {
     if (m_desiredDimming == multiplier) {
diff --git a/daemon/controllers/kwinbrightness.h b/daemon/controllers/kwinbrightness.h
index 96c4cff09..521cb21f3 100644
--- a/daemon/controllers/kwinbrightness.h
+++ b/daemon/controllers/kwinbrightness.h
@@ -28,7 +28,6 @@ public:
     void setBrightness(int brightness) override;
     bool isInternal() const override;
     std::optional<QByteArray> edidData() const override;
-    bool supportsDimmingMultiplier() const override;
     void setDimmingMultiplier(double multiplier) override;
 
     void applyPendingBrightness();
diff --git a/daemon/controllers/screenbrightnesscontroller.cpp b/daemon/controllers/screenbrightnesscontroller.cpp
index 64bd8ef8e..966d9cf15 100644
--- a/daemon/controllers/screenbrightnesscontroller.cpp
+++ b/daemon/controllers/screenbrightnesscontroller.cpp
@@ -161,13 +161,10 @@ void ScreenBrightnessController::onDetectorDisplaysChanged()
 
     QStringList addedDisplayIds;
     QStringList brightnessChangedDisplayIds;
-    auto newRememberedDisplayState = m_rememberedDisplayState;
 
     for (auto &[displayId, info] : newDisplayById) {
         const auto it = m_displaysById.find(displayId);
-        const auto rememberedIt = m_rememberedDisplayState.find(info.match);
         const bool added = it == m_displaysById.end();
-        const bool readded = added && rememberedIt != m_rememberedDisplayState.end();
         const bool replaced = !added && info.display != it->second.display;
         const bool valueChanged = replaced
             && (it->second.brightnessLogic.info().value != info.display->brightness()
@@ -185,36 +182,9 @@ void ScreenBrightnessController::onDetectorDisplaysChanged()
         if (added) {
             addedDisplayIds.push_back(displayId);
         }
-        if (readded) {
-            const RememberedDisplayState &rds = rememberedIt->second;
-            info.brightnessLogic.setValueRange(rds.minBrightness, info.display->maxBrightness());
-
-            if (info.display->supportsDimmingMultiplier()) {
-                info.dimmingRatio = dimmingRatioForDisplay(displayId);
-                info.display->setDimmingMultiplier(info.dimmingRatio);
-            } else if (rds.latestActiveDimmingRatio.has_value()
-                       && info.display->brightness() == brightnessMultiplied(rds.brightness, *rds.latestActiveDimmingRatio, rds.minBrightness)) {
-                qCDebug(POWERDEVIL) << "Re-recognized display" << displayId << "at brightness" << rds.brightness << "* dimming ratio"
-                                    << *rds.latestActiveDimmingRatio;
-
-                info.brightnessLogic.setValue(rds.brightness);
-                info.dimmingRatio = dimmingRatioForDisplay(displayId);
-
-                if (info.dimmingRatio != *rds.latestActiveDimmingRatio) {
-                    qCDebug(POWERDEVIL) << "=> reset brightness for" << displayId << "to current dimming ratio" << info.dimmingRatio;
-                    const PowerDevil::BrightnessLogic::BrightnessInfo bi = info.brightnessLogic.info();
-                    const int dimmedValue = brightnessMultiplied(bi.value, info.dimmingRatio, bi.valueMin);
-                    info.display->setBrightness(dimmedValue);
-                }
-            }
-            // delay removing the display state from m_rememberedDisplayState, in case several
-            // simultaneously added displays both use the same EDID (some EDIDs lack serial numbers)
-            newRememberedDisplayState.erase(info.match);
-        }
     }
 
     m_displaysById = std::move(newDisplayById);
-    m_rememberedDisplayState = std::move(newRememberedDisplayState);
     m_externalBrightnessController->setDisplays(newForExternalControl);
 
     for (const QString &removed : removedDisplayIds) {
@@ -335,15 +305,11 @@ void ScreenBrightnessController::setBrightness(const QString &displayId,
         auto &[id, info] = *it;
         const PowerDevil::BrightnessLogic::BrightnessInfo bi = info.brightnessLogic.info();
         const int boundedValue = std::clamp(value, bi.valueMin, bi.valueMax);
-        const int dimmedValue = info.display->supportsDimmingMultiplier() ? boundedValue : brightnessMultiplied(boundedValue, info.dimmingRatio, bi.valueMin);
 
-        qCDebug(POWERDEVIL) << "Set screen brightness of" << displayId << "to" << dimmedValue << "/" << bi.valueMax;
+        qCDebug(POWERDEVIL) << "Set screen brightness of" << displayId << "to" << boundedValue << "/" << bi.valueMax;
         if (value != boundedValue) {
             qCDebug(POWERDEVIL) << "- clamped from" << value;
         }
-        if (boundedValue != dimmedValue) {
-            qCDebug(POWERDEVIL) << "- dimmed as" << boundedValue << "*" << info.dimmingRatio;
-        }
 
         // notify only when the internally tracked brightness value is actually different
         if (bi.value != boundedValue) {
@@ -357,9 +323,8 @@ void ScreenBrightnessController::setBrightness(const QString &displayId,
             }
         }
 
-        // but always call setBrightness() on the display, both for changes to the
-        // brightness multiplier and in case we're unaware of an external change
-        info.display->setBrightness(dimmedValue);
+        // but always call setBrightness() on the display, in case we're unaware of an external change
+        info.display->setBrightness(boundedValue);
     } else {
         qCWarning(POWERDEVIL) << "Set screen brightness failed: no display with id" << displayId;
     }
@@ -463,25 +428,7 @@ void ScreenBrightnessController::setDimmingRatio(const QString &dimmingId, doubl
     qCDebug(POWERDEVIL) << "Set screen brightness dimming ratio with ID" << dimmingId << "to" << boundedRatio;
 
     for (auto &[id, info] : m_displaysById) {
-        const double newRatio = dimmingRatioForDisplay(id);
-        if (info.display->supportsDimmingMultiplier()) {
-            info.display->setDimmingMultiplier(newRatio);
-        } else {
-            if (info.dimmingRatio == newRatio) {
-                continue;
-            }
-            info.dimmingRatio = newRatio;
-            // set brightness to the currently stored value, but with the new multiplier
-            setBrightness(id, info.brightnessLogic.info().value, u"(internal)"_s, u"dimming"_s);
-
-            if (newRatio != 1.0 && info.match.isValid()) {
-                m_rememberedDisplayState[info.match] = RememberedDisplayState{
-                    .brightness = info.brightnessLogic.info().value,
-                    .minBrightness = info.brightnessLogic.info().valueMin,
-                    .latestActiveDimmingRatio = info.dimmingRatio,
-                };
-            }
-        }
+        info.display->setDimmingMultiplier(dimmingRatioForDisplay(id));
     }
 }
 
diff --git a/daemon/controllers/screenbrightnesscontroller.h b/daemon/controllers/screenbrightnesscontroller.h
index 3bd9aef88..5b26f0e14 100644
--- a/daemon/controllers/screenbrightnesscontroller.h
+++ b/daemon/controllers/screenbrightnesscontroller.h
@@ -220,13 +220,6 @@ private:
     int m_finishedDetectingCount = 0;
     std::unique_ptr<ExternalBrightnessController> m_externalBrightnessController;
 
-    struct RememberedDisplayState {
-        int brightness;
-        int minBrightness = 0;
-        std::optional<double> latestActiveDimmingRatio;
-    };
-    std::map<DisplayMatch, RememberedDisplayState> m_rememberedDisplayState;
-
     struct DimmingLimit {
         double ratio = 1.0;
     };
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.