[PATCH 2/2] compositor: use smoother range for backlight control
Kristian Hoegsberg
hoegsberg at gmail.com
Tue Mar 20 10:54:18 PDT 2012
On Mon, Mar 12, 2012 at 07:40:09PM -0300, Tiago Vignatti wrote:
> now it goes from 0 to 255.
Looks good, thanks.
Kristian
> 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
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list