[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;
};