65 lines
2.4 KiB
Diff
65 lines
2.4 KiB
Diff
From 0c9d8f1d4b5018199cb5a9b57580dc1480a7f915 Mon Sep 17 00:00:00 2001
|
|
From: Jani Nikula <jani.nikula@intel.com>
|
|
Date: Wed, 7 May 2014 12:01:01 +0300
|
|
Subject: [PATCH] backlight: handle saved brightness exceeding max brightness
|
|
|
|
If too high a brightness value has been saved (e.g. due to kernel
|
|
mechanism changing from one kernel version to another, or booting the
|
|
userspace on another system), the brightness update fails and the
|
|
process exits.
|
|
|
|
Clamp saved brightness between the policy minimum introduced in
|
|
|
|
commit 7b909d7407965c03caaba30daae7aee113627a83
|
|
Author: Josh Triplett <josh@joshtriplett.org>
|
|
Date: Tue Mar 11 21:16:33 2014 -0700
|
|
|
|
backlight: Avoid restoring brightness to an unreadably dim level
|
|
|
|
and the absolute maximum.
|
|
|
|
https://bugs.freedesktop.org/show_bug.cgi?id=78200
|
|
---
|
|
src/backlight/backlight.c | 11 ++++++++---
|
|
1 file changed, 8 insertions(+), 3 deletions(-)
|
|
|
|
diff --git src/backlight/backlight.c src/backlight/backlight.c
|
|
index c708391..691472c 100644
|
|
--- src/backlight/backlight.c
|
|
+++ src/backlight/backlight.c
|
|
@@ -229,7 +229,7 @@ static unsigned get_max_brightness(struct udev_device *device) {
|
|
* 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;
|
|
+ unsigned brightness, new_brightness, min_brightness;
|
|
|
|
r = safe_atou(*value, &brightness);
|
|
if (r < 0) {
|
|
@@ -237,7 +237,8 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned
|
|
return;
|
|
}
|
|
|
|
- new_brightness = MAX3(brightness, 1U, max_brightness/20);
|
|
+ min_brightness = MAX(1U, max_brightness/20);
|
|
+ new_brightness = CLAMP(brightness, min_brightness, max_brightness);
|
|
if (new_brightness != brightness) {
|
|
char *old_value = *value;
|
|
|
|
@@ -247,7 +248,11 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned
|
|
return;
|
|
}
|
|
|
|
- log_debug("Saved brightness %s too low; increasing to %s.", old_value, *value);
|
|
+ log_info("Saved brightness %s %s to %s.", old_value,
|
|
+ new_brightness > brightness ?
|
|
+ "too low; increasing" : "too high; decreasing",
|
|
+ *value);
|
|
+
|
|
free(old_value);
|
|
}
|
|
}
|
|
--
|
|
1.7.9.2
|
|
|