compositor-drm: drm_set_backlight heads
authorPekka Paalanen <pekka.paalanen@collabora.co.uk>
Tue, 12 Sep 2017 13:14:31 +0000 (16:14 +0300)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Wed, 18 Apr 2018 09:00:52 +0000 (12:00 +0300)
Fix this function to support more than one head per output.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Acked-by: Derek Foreman <derekf@osg.samsung.com>
libweston/compositor-drm.c

index f10e90d..9aaf903 100644 (file)
@@ -3806,21 +3806,24 @@ drm_get_backlight(struct drm_head *head)
 static void
 drm_set_backlight(struct weston_output *output_base, uint32_t value)
 {
-       struct drm_head *head = to_drm_head(weston_output_get_first_head(output_base));
+       struct drm_output *output = to_drm_output(output_base);
+       struct drm_head *head;
        long max_brightness, new_brightness;
 
-       if (!head->backlight)
-               return;
-
        if (value > 255)
                return;
 
-       max_brightness = backlight_get_max_brightness(head->backlight);
+       wl_list_for_each(head, &output->base.head_list, base.output_link) {
+               if (!head->backlight)
+                       return;
 
-       /* get denormalized value */
-       new_brightness = (value * max_brightness) / 255;
+               max_brightness = backlight_get_max_brightness(head->backlight);
 
-       backlight_set_brightness(head->backlight, new_brightness);
+               /* get denormalized value */
+               new_brightness = (value * max_brightness) / 255;
+
+               backlight_set_brightness(head->backlight, new_brightness);
+       }
 }
 
 /**