[PATCH 2/2] compositor: use smoother range for backlight control

Tiago Vignatti tiago.vignatti at intel.com
Mon Mar 12 15:40:09 PDT 2012


now it goes from 0 to 255.

Signed-off-by: Tiago Vignatti <tiago.vignatti at intel.com>
---
 src/compositor-drm.c |   12 ++++++------
 src/compositor.h     |    2 +-
 src/shell.c          |   17 +++++++++++------
 3 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index ba7e642..fe8ef49 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -927,7 +927,7 @@ sprite_handle_pending_buffer_destroy(struct wl_listener *listener,
 	sprite->pending_surface = NULL;
 }
 
-/* returns a value between 1-10 range, where higher is brighter */
+/* returns a value between 0-255 range, where higher is brighter */
 static uint32_t
 drm_get_backlight(struct drm_output *output)
 {
@@ -936,13 +936,13 @@ drm_get_backlight(struct drm_output *output)
 	brightness = backlight_get_brightness(output->backlight);
 	max_brightness = backlight_get_max_brightness(output->backlight);
 
-	/* convert it on a scale of 1 to 10 */
-	norm = 1 + ((brightness) * 9)/(max_brightness);
+	/* convert it on a scale of 0 to 255 */
+	norm = (brightness * 255)/(max_brightness);
 
 	return (uint32_t) norm;
 }
 
-/* values accepted are between 1-10 range */
+/* values accepted are between 0-255 range */
 static void
 drm_set_backlight(struct weston_output *output_base, uint32_t value)
 {
@@ -952,13 +952,13 @@ drm_set_backlight(struct weston_output *output_base, uint32_t value)
 	if (!output->backlight)
 		return;
 
-	if (value < 1 || value > 10)
+	if (value < 0 || value > 255)
 		return;
 
 	max_brightness = backlight_get_max_brightness(output->backlight);
 
 	/* get denormalized value */
-	new_brightness = ((value - 1) * (max_brightness)) / 9;
+	new_brightness = (value * max_brightness) / 255;
 
 	backlight_set_brightness(output->backlight, new_brightness);
 }
diff --git a/src/compositor.h b/src/compositor.h
index b5ba7b2..16389a6 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -97,7 +97,7 @@ struct weston_output {
 	void (*destroy)(struct weston_output *output);
 	void (*assign_planes)(struct weston_output *output);
 
-	/* backlight values are on 1-10 range, where higher is brighter */
+	/* backlight values are on 0-255 range, where higher is brighter */
 	uint32_t backlight_current;
 	void (*set_backlight)(struct weston_output *output, uint32_t value);
 	void (*set_dpms)(struct weston_output *output, enum dpms_enum level);
diff --git a/src/shell.c b/src/shell.c
index 765b0a4..6d8546d 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1923,6 +1923,7 @@ backlight_binding(struct wl_input_device *device, uint32_t time,
 {
 	struct weston_compositor *compositor = data;
 	struct weston_output *output;
+	long backlight_new;
 
 	/* TODO: we're limiting to simple use cases, where we assume just
 	 * control on the primary display. We'd have to extend later if we
@@ -1935,13 +1936,17 @@ backlight_binding(struct wl_input_device *device, uint32_t time,
 	if (!output->set_backlight)
 		return;
 
-	if ((key == KEY_F9 || key == KEY_BRIGHTNESSDOWN) &&
-	    output->backlight_current > 1)
-		output->backlight_current--;
-	else if ((key == KEY_F10 || key == KEY_BRIGHTNESSUP) &&
-	    output->backlight_current < 10)
-		output->backlight_current++;
+	if (key == KEY_F9 || key == KEY_BRIGHTNESSDOWN)
+		backlight_new = output->backlight_current - 25;
+	else if (key == KEY_F10 || key == KEY_BRIGHTNESSUP)
+		backlight_new = output->backlight_current + 25;
 
+	if (backlight_new < 5)
+		backlight_new = 5;
+	if (backlight_new > 255)
+		backlight_new = 255;
+
+	output->backlight_current = backlight_new;
 	output->set_backlight(output, output->backlight_current);
 }
 
-- 
1.7.5.4



More information about the wayland-devel mailing list