summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2019-08-23 15:23:44 +0200
committerBenjamin Berg <bberg@redhat.com>2019-08-23 15:23:44 +0200
commit35ed3aa8d8d18ad6f088f2855a37e47ed5e50e8f (patch)
treee8f4bca447f04a0671464fee675023edaba4b625
parentbeabc473cc1e7e4a07263267d12dcab56b433c3b (diff)
downloadgnome-settings-daemon-35ed3aa8d8d18ad6f088f2855a37e47ed5e50e8f.tar.gz
power: Fix rounding of brightness value
We rounded properly for percentage to absolute value, but we always floored the other way around. Also round when converting the absolute value to percentage, this should prevent issues where the percentage changes becaues the calculated absolute value will be resolved to a different percentage than it was calculated from.
-rw-r--r--plugins/power/gpm-common.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/plugins/power/gpm-common.c b/plugins/power/gpm-common.c
index 0934a205..c2e521f5 100644
--- a/plugins/power/gpm-common.c
+++ b/plugins/power/gpm-common.c
@@ -47,10 +47,15 @@
int
gsd_power_backlight_abs_to_percentage (int min, int max, int value)
{
+ int steps;
+
g_return_val_if_fail (max > min, -1);
g_return_val_if_fail (value >= min, -1);
g_return_val_if_fail (value <= max, -1);
- return (((value - min) * 100) / (max - min));
+
+ steps = max - min;
+
+ return (((value - min) * 100 + steps / 2) / steps);
}
/* take a percentage and convert to a discrete value with offset */