summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2023-08-30 13:53:23 +0900
committerMichele Calgaro <[email protected]>2023-09-04 09:54:26 +0900
commitfa1f792e610a6a26b2cbd3aa98866eefc200d0dd (patch)
treeb88bdd9fe88c3883c2ac9da97e8a8bde603e0e85 /src
parente7c760c9c04c55e1ebfae695accf2aebcf9ad155 (diff)
downloadtdepowersave-fa1f792e610a6a26b2cbd3aa98866eefc200d0dd.tar.gz
tdepowersave-fa1f792e610a6a26b2cbd3aa98866eefc200d0dd.zip
Separate logic to set brightness by absolute level or percentage
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/configuredialog.cpp4
-rw-r--r--src/hardware.cpp141
-rw-r--r--src/hardware.h6
-rw-r--r--src/tdepowersave.cpp10
-rw-r--r--src/tdepowersave.h4
5 files changed, 84 insertions, 81 deletions
diff --git a/src/configuredialog.cpp b/src/configuredialog.cpp
index a7294f1..1669d24 100644
--- a/src/configuredialog.cpp
+++ b/src/configuredialog.cpp
@@ -1652,7 +1652,7 @@ void ConfigureDialog::brightnessSlider_sliderMoved( int new_value ) {
if (cB_Brightness->isEnabled() && cB_Brightness->isChecked()) {
scheme_valueChanged();
tL_valueBrightness->setText(TQString::number(new_value) + " %");
- hwinfo->setBrightness(-1, new_value);
+ hwinfo->setBrightnessPercentage(new_value);
pB_resetBrightness->setEnabled(true);
brightness_changed = true;
}
@@ -1664,7 +1664,7 @@ void ConfigureDialog::brightnessSlider_sliderMoved( int new_value ) {
void ConfigureDialog::pB_resetBrightness_clicked( ) {
kdDebugFuncIn(trace);
- hwinfo->setBrightness(brightness_last, -1);
+ hwinfo->setBrightnessLevel(brightness_last);
brightnessSlider->setValue(brightness_last);
pB_resetBrightness->setEnabled(false);
brightness_changed = false;
diff --git a/src/hardware.cpp b/src/hardware.cpp
index 86098db..500967d 100644
--- a/src/hardware.cpp
+++ b/src/hardware.cpp
@@ -898,31 +898,71 @@ bool HardwareInfo::suspend( suspend_type suspend ) {
}
/*!
- * Function to set brightness via TDE hardware library (if supported by hardware)
+ * Function to set brightness level via TDE hardware library (if supported by hardware)
* \param level Integer with the level to set, (range: 0 - \ref availableBrightnessLevels )
- * \param percent Integer with the brightness percentage to set
* \return boolean with result of the operation
* \retval true if successful
* \retval false else, if a error occurs
*/
-bool HardwareInfo::setBrightness ( int level, int percent ){
- if (trace) kdDebug() << funcinfo << "IN: " << "level: " << level << " percent: " << percent << endl;
+bool HardwareInfo::setBrightnessLevel(int level)
+{
+ if (trace) kdDebug() << funcinfo << "IN: " << "level: " << level << endl;
bool retval = false;
+ int maxBrightness = getMaxBrightnessLevel();
+
+ // Use the first backlight in the list
+ TDEGenericHardwareList hwlist = m_hwdevices->listByDeviceClass(TDEGenericDeviceType::Backlight);
+ TDEGenericDevice *hwdevice;
+ hwdevice = hwlist.first();
+ TDEBacklightDevice *backlightdevice = static_cast<TDEBacklightDevice*>(hwdevice);
- if ((level == -1) && (percent >= 0)) {
- if (percent == 0) {
+ if (backlightdevice) {
+ if (!brightness) {
+ checkBrightness();
+ }
+
+ // Make sure level is within valid range
+ if (level < 0) {
level = 0;
- } else if (percent >= 98) {
- level = (availableBrightnessLevels - 1);
+ }
+ else if (level > maxBrightness) {
+ level = maxBrightness;
+ }
+
+ if (!brightness) {
+ kdError() << "Change brightness not supported " << endl;
} else {
- level = (int)((float)availableBrightnessLevels * ((float)percent/100.0));
- if (level > (availableBrightnessLevels -1))
- level = availableBrightnessLevels -1;
- kdDebug() << "percentage mapped to new level: " << level << endl;
+ if (currentBrightnessLevel == level) {
+ kdDebug() << "Brightness level not changed, requested level == current level" << endl;
+ retval = true;
+ } else {
+ backlightdevice->setRawBrightness(level);
+ retval = true;
+ }
}
}
+ // check for actual brightness level to be sure everything was set correct
+ checkCurrentBrightness();
+ kdDebugFuncOut(trace);
+ return retval;
+}
+
+/*!
+ * Function to set brightness percentage via TDE hardware library (if supported by hardware)
+ * \param percent Integer with the brightness percentage to set
+ * \return boolean with result of the operation
+ * \retval true if successful
+ * \retval false else, if a error occurs
+ */
+bool HardwareInfo::setBrightnessPercentage(int percent)
+{
+ if (trace) kdDebug() << funcinfo << "IN: " << " percent: " << percent << endl;
+
+ bool retval = false;
+ int maxBrightness = getMaxBrightnessLevel();
+
// Use the first backlight in the list
TDEGenericHardwareList hwlist = m_hwdevices->listByDeviceClass(TDEGenericDeviceType::Backlight);
TDEGenericDevice *hwdevice;
@@ -934,8 +974,17 @@ bool HardwareInfo::setBrightness ( int level, int percent ){
checkBrightness();
}
- if (!brightness || (level < 0 ) || (level >= availableBrightnessLevels)) {
- kdError() << "Change brightness or requested level not supported " << endl;
+ // Make sure percentage is within valid range
+ if (percent < 0) {
+ percent = 0;
+ }
+ else if (percent > 100) {
+ percent = 100;
+ }
+ int level = (int)(maxBrightness * percent / 100.0);
+
+ if (!brightness) {
+ kdError() << "Change brightness not supported " << endl;
} else {
if (currentBrightnessLevel == level) {
kdDebug() << "Brightness level not changed, requested level == current level" << endl;
@@ -1137,35 +1186,11 @@ bool HardwareInfo::setBrightnessUp(int percentageStep) {
checkCurrentBrightness();
- if (supportBrightness() && (getCurrentBrightnessLevel() >= 0) &&
- (getCurrentBrightnessLevel() != (getMaxBrightnessLevel()-1))) {
- int setTo = 0;
- int minPercStep = 10;
- int currentPerc = (int)(((float)getCurrentBrightnessLevel()/(float)(getMaxBrightnessLevel()-1))*100.0);
-
- if (percentageStep > 0 && (percentageStep <= (100-currentPerc))) {
- minPercStep = percentageStep;
- }
-
- if ((currentPerc + minPercStep) > 100) {
- // set to 100 %
- setTo = getMaxBrightnessLevel() -1;
- } else {
- setTo = (int)(((float)(getMaxBrightnessLevel()-1))*(((float)(currentPerc + minPercStep))/100.0));
- if ((setTo == getCurrentBrightnessLevel()) && (setTo < (getMaxBrightnessLevel() -1))) {
- setTo++;
- }
- }
-
- if (trace) {
- kdDebug() << "Max: " << getMaxBrightnessLevel()
- << " Current: " << getCurrentBrightnessLevel()
- << " minPercStep: " << minPercStep
- << " currentPerc: " << currentPerc
- << " setTo: " << setTo << endl;
- }
-
- retval = setBrightness(setTo, -1);
+ if (supportBrightness() && getCurrentBrightnessLevel() < getMaxBrightnessLevel() &&
+ percentageStep > 0)
+ {
+ int currentPerc = (int)(100.0 * getCurrentBrightnessLevel() / getMaxBrightnessLevel());
+ retval = setBrightnessPercentage(currentPerc + percentageStep);
}
kdDebugFuncOut(trace);
@@ -1186,33 +1211,9 @@ bool HardwareInfo::setBrightnessDown(int percentageStep) {
checkCurrentBrightness();
- if (supportBrightness() && (getCurrentBrightnessLevel() > 0)) {
- int setTo = 0;
- int minPercStep = 10;
- int currentPerc = (int)(((float)getCurrentBrightnessLevel()/(float)(getMaxBrightnessLevel()-1))*100.0);
-
- if (percentageStep > 0 && (percentageStep < currentPerc)) {
- minPercStep = percentageStep;
- }
-
- if ((currentPerc - minPercStep) < 0) {
- setTo = 0;
- } else {
- setTo = (int)(((float)(getMaxBrightnessLevel()-1))*(((float)(currentPerc - minPercStep))/100.0));
- if ((setTo == getCurrentBrightnessLevel()) && (setTo > 0)) {
- setTo--;
- }
- }
-
- if (trace) {
- kdDebug() << "Max: " << getMaxBrightnessLevel()
- << " Current: " << getCurrentBrightnessLevel()
- << " minPercStep: " << minPercStep
- << " currentPerc: " << currentPerc
- << " setTo: " << setTo << endl;
- }
-
- retval = setBrightness(setTo, -1);
+ if (supportBrightness() && getCurrentBrightnessLevel() > 0 && percentageStep > 0) {
+ int currentPerc = (int)(100.0 * getCurrentBrightnessLevel() / getMaxBrightnessLevel());
+ retval = setBrightnessPercentage(currentPerc - percentageStep);
}
kdDebugFuncOut(trace);
diff --git a/src/hardware.h b/src/hardware.h
index eb8fe99..066d01c 100644
--- a/src/hardware.h
+++ b/src/hardware.h
@@ -459,8 +459,10 @@ public:
// --> functions to call a TDE hardware library and trigger an action
//! execute/trigger a suspend via the TDE hardware library
bool suspend ( suspend_type suspend );
- //! set the brightness via TDE hardware library
- bool setBrightness ( int level, int percent = -1);
+ //! set the brightness level via TDE hardware library
+ bool setBrightnessLevel(int level);
+ //! set the brightness percentage via TDE hardware library
+ bool setBrightnessPercentage(int percent);
//! to set the brightness down
bool setBrightnessDown(int percentageStep = -1);
//! to set the brightness up
diff --git a/src/tdepowersave.cpp b/src/tdepowersave.cpp
index b5db7a9..b57bfef 100644
--- a/src/tdepowersave.cpp
+++ b/src/tdepowersave.cpp
@@ -1155,7 +1155,7 @@ void tdepowersave::do_dimm() {
// dimm the display down
if (current > 0 &&
current > ((int)((float)hwinfo->getMaxBrightnessLevel()*((float)settings->autoDimmTo/100.0))-1)) {
- hwinfo->setBrightness((current -1) , -1);
+ hwinfo->setBrightnessLevel(current -1);
} else {
AUTODIMM_Timer->stop();
@@ -1167,7 +1167,7 @@ void tdepowersave::do_dimm() {
} else {
// dimm the display up
if (current < ((int)((float)hwinfo->getMaxBrightnessLevel()*((float)settings->brightnessValue/100.0))-1)) {
- hwinfo->setBrightness((current +1) , -1);
+ hwinfo->setBrightnessLevel(current +1);
} else {
AUTODIMM_Timer->stop();
}
@@ -1925,7 +1925,7 @@ void tdepowersave::setSchemeSettings(){
// --> set brightness settings
if(settings->brightness && hwinfo->supportBrightness()) {
// set to given values
- hwinfo->setBrightness (-1, settings->brightnessValue);
+ hwinfo->setBrightnessPercentage(settings->brightnessValue);
}
// --> set CPU Freq settings
@@ -2205,7 +2205,7 @@ void tdepowersave::handleActionCall ( action action, int value , bool checkAC, b
TQTimer::singleShot(100, this, TQT_SLOT(do_freeze()));
break;
case BRIGHTNESS:
- hwinfo->setBrightness( -1, value );
+ hwinfo->setBrightnessPercentage(value);
break;
case CPUFREQ_POWERSAVE:
hwinfo->setCPUFreq( POWERSAVE );
@@ -2953,7 +2953,7 @@ void tdepowersave::brightnessSet(int percentage)
if (hwinfo->supportBrightness() && percentage >= 0 && percentage <= 100)
{
- hwinfo->setBrightness(-1, percentage);
+ hwinfo->setBrightnessPercentage(percentage);
}
kdDebugFuncOut(trace);
diff --git a/src/tdepowersave.h b/src/tdepowersave.h
index af4780e..521184a 100644
--- a/src/tdepowersave.h
+++ b/src/tdepowersave.h
@@ -440,8 +440,8 @@ k_dcop:
//! dcop function to open the configure dialog
bool openConfigureDialog();
- //! dcop function to find out if tdepowersave manages DPMS
- bool currentSchemeManagesDPMS();
+ //! dcop function to find out if tdepowersave manages DPMS
+ bool currentSchemeManagesDPMS();
//! dcop funtion to get the current brightness level
int brightnessGet();
//! dcop funtion to set the brightness level