From 5ab91ad8450004bbb425c784a6fb5cd62beab509 Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Mon, 12 Mar 2012 19:40:09 -0300 Subject: [PATCH] compositor: use smoother range for backlight control now it goes from 0 to 255. Signed-off-by: Tiago Vignatti --- 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 ba7e6429..fe8ef490 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 b5ba7b25..16389a63 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 b294c205..fa519226 100644 --- a/src/shell.c +++ b/src/shell.c @@ -1927,6 +1927,7 @@ backlight_binding(struct wl_input_device *device, uint32_t time, { struct weston_compositor *compositor = data; struct weston_output *output; + long backlight_new = 0; /* 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 @@ -1939,13 +1940,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); }