summaryrefslogtreecommitdiff
path: root/src/backlight
diff options
context:
space:
mode:
authorDenis Tikhomirov <dvtikhomirov@gmail.com>2014-06-05 23:59:40 +0400
committerLennart Poettering <lennart@poettering.net>2014-06-10 18:57:48 +0200
commit4cd2b2cf8ca585d15ebc859701b346658262b5bb (patch)
tree557a0b696d91b77493f0d580fae6d4d4adc1d9ca /src/backlight
parent51cb9d734a182c4892a6b31f58d75489a2ca432b (diff)
downloadsystemd-4cd2b2cf8ca585d15ebc859701b346658262b5bb.tar.gz
backlight: Do not clamp brightness for LEDs
https://bugs.freedesktop.org/show_bug.cgi?id=77092 On Thu, Jun 05, 2014 at 08:37:20AM +0200, Lennart Poettering wrote: > The patch is line-broken, please send an uncorrupted patch! I am very sorry, I forgot that my client limits line width. I will use mutt now on. > clamp_brightness() clamps the brightness value to the range of the > actual device. This is a recent addition that was added to deal with > driver updates where the resolution is changed. I don't think this part > should be dropped for LED devices. The clamp_brightness() call hence > should be called unconditionally, however, internally it should use a > different min_brightness value if something is an !backlight devices... Thank you for explanation, this sounds very reasonable to me. Please, see updated patch:
Diffstat (limited to 'src/backlight')
-rw-r--r--src/backlight/backlight.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
index 691472cc3a..4d94ebf58a 100644
--- a/src/backlight/backlight.c
+++ b/src/backlight/backlight.c
@@ -225,11 +225,13 @@ static unsigned get_max_brightness(struct udev_device *device) {
/* Some systems turn the backlight all the way off at the lowest levels.
* clamp_brightness clamps the saved brightness to at least 1 or 5% of
- * max_brightness. This avoids preserving an unreadably dim screen, which
- * would otherwise force the user to disable state restoration. */
+ * max_brightness in case of 'backlight' subsystem. This avoids preserving
+ * an unreadably dim screen, which would otherwise force the user to
+ * disable state restoration. */
static void clamp_brightness(struct udev_device *device, char **value, unsigned max_brightness) {
int r;
unsigned brightness, new_brightness, min_brightness;
+ const char *subsystem;
r = safe_atou(*value, &brightness);
if (r < 0) {
@@ -237,7 +239,12 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned
return;
}
- min_brightness = MAX(1U, max_brightness/20);
+ subsystem = udev_device_get_subsystem(device);
+ if (streq_ptr(subsystem, "backlight"))
+ min_brightness = MAX(1U, max_brightness/20);
+ else
+ min_brightness = 0;
+
new_brightness = CLAMP(brightness, min_brightness, max_brightness);
if (new_brightness != brightness) {
char *old_value = *value;