You have been requested to review the proposed merge of lp:~kaihengfeng/unity-settings-daemon/add-brightness-limit-mechanism into lp:unity-settings-daemon.
For more details, see: https://code.launchpad.net/~kaihengfeng/unity-settings-daemon/add-brightness-limit-mechanism/+merge/277416 Add a mechanism that can make user to choose the minimum/maximum adjustable brightness level. -- Your team Ubuntu Desktop is requested to review the proposed merge of lp:~kaihengfeng/unity-settings-daemon/add-brightness-limit-mechanism into lp:unity-settings-daemon.
=== modified file 'plugins/power/gpm-common.c' --- plugins/power/gpm-common.c 2014-06-26 00:02:19 +0000 +++ plugins/power/gpm-common.c 2015-11-13 07:45:35 +0000 @@ -1414,7 +1414,10 @@ } int -backlight_get_percentage (GsdRRScreen *rr_screen, GError **error) +backlight_get_percentage (GsdRRScreen *rr_screen, + gfloat min_percentage, + gfloat max_percentage, + GError **error) { GsdRROutput *output; gint now; @@ -1429,6 +1432,8 @@ min = gsd_rr_output_get_backlight_min (output); max = gsd_rr_output_get_backlight_max (output); now = gsd_rr_output_get_backlight (output, error); + min = MAX (min, max * min_percentage); + max = max * max_percentage; if (now < 0) goto out; value = ABS_TO_PERCENTAGE (min, max, now); @@ -1442,6 +1447,8 @@ now = backlight_helper_get_value ("get-brightness", error); if (now < 0) goto out; + min = MAX (min, max * min_percentage); + max = max * max_percentage; value = ABS_TO_PERCENTAGE (min, max, now); out: return value; @@ -1488,6 +1495,8 @@ gboolean backlight_set_percentage (GsdRRScreen *rr_screen, guint value, + gfloat min_percentage, + gfloat max_percentage, GError **error) { GsdRROutput *output; @@ -1505,6 +1514,8 @@ g_warning ("no xrandr backlight capability"); return ret; } + min = MAX (min, max * min_percentage); + max = max * max_percentage; discrete = PERCENTAGE_TO_ABS (min, max, value); ret = gsd_rr_output_set_backlight (output, discrete, @@ -1516,6 +1527,8 @@ max = backlight_helper_get_value ("get-max-brightness", error); if (max < 0) return ret; + min = MAX (min, max * min_percentage); + max = max * max_percentage; discrete = PERCENTAGE_TO_ABS (min, max, value); ret = backlight_helper_set_value ("set-brightness", discrete, @@ -1525,7 +1538,10 @@ } int -backlight_step_up (GsdRRScreen *rr_screen, GError **error) +backlight_step_up (GsdRRScreen *rr_screen, + gfloat min_percentage, + gfloat max_percentage, + GError **error) { GsdRROutput *output; gboolean ret = FALSE; @@ -1555,6 +1571,8 @@ now = gsd_rr_output_get_backlight (output, error); if (now < 0) return percentage_value; + min = MAX (min, max * min_percentage); + max = max * max_percentage; step = BRIGHTNESS_STEP_AMOUNT (max - min + 1); discrete = MIN (now + step, max); ret = gsd_rr_output_set_backlight (output, @@ -1572,6 +1590,8 @@ max = backlight_helper_get_value ("get-max-brightness", error); if (max < 0) return percentage_value; + min = MAX (min, max * min_percentage); + max = max * max_percentage; step = BRIGHTNESS_STEP_AMOUNT (max - min + 1); discrete = MIN (now + step, max); ret = backlight_helper_set_value ("set-brightness", @@ -1584,7 +1604,10 @@ } int -backlight_step_down (GsdRRScreen *rr_screen, GError **error) +backlight_step_down (GsdRRScreen *rr_screen, + gfloat min_percentage, + gfloat max_percentage, + GError **error) { GsdRROutput *output; gboolean ret = FALSE; @@ -1614,8 +1637,10 @@ now = gsd_rr_output_get_backlight (output, error); if (now < 0) return percentage_value; + min = MAX (min, max * min_percentage); + max = max * max_percentage; step = BRIGHTNESS_STEP_AMOUNT (max - min + 1); - discrete = MAX (now - step, 0); + discrete = MAX (now - step, min); ret = gsd_rr_output_set_backlight (output, discrete, error); @@ -1631,8 +1656,10 @@ max = backlight_helper_get_value ("get-max-brightness", error); if (max < 0) return percentage_value; + min = MAX (min, max * min_percentage); + max = max * max_percentage; step = BRIGHTNESS_STEP_AMOUNT (max - min + 1); - discrete = MAX (now - step, 0); + discrete = MAX (now - step, min); ret = backlight_helper_set_value ("set-brightness", discrete, error); === modified file 'plugins/power/gpm-common.h' --- plugins/power/gpm-common.h 2014-06-26 00:02:19 +0000 +++ plugins/power/gpm-common.h 2015-11-13 07:45:35 +0000 @@ -58,14 +58,25 @@ int gsd_power_backlight_abs_to_percentage (int min, int max, int value); gboolean backlight_available (GsdRRScreen *rr_screen); int backlight_get_abs (GsdRRScreen *rr_screen, GError **error); -int backlight_get_percentage (GsdRRScreen *rr_screen, GError **error); +int backlight_get_percentage (GsdRRScreen *rr_screen, + gfloat min_percentage, + gfloat max_percentage, + GError **error); int backlight_get_min (GsdRRScreen *rr_screen); int backlight_get_max (GsdRRScreen *rr_screen, GError **error); gboolean backlight_set_percentage (GsdRRScreen *rr_screen, guint value, - GError **error); -int backlight_step_up (GsdRRScreen *rr_screen, GError **error); -int backlight_step_down (GsdRRScreen *rr_screen, GError **error); + gfloat min_percentage, + gfloat max_percentage, + GError **error); +int backlight_step_up (GsdRRScreen *rr_screen, + gfloat min_percentage, + gfloat max_percentage, + GError **error); +int backlight_step_down (GsdRRScreen *rr_screen, + gfloat min_percentage, + gfloat max_percentage, + GError **error); int backlight_set_abs (GsdRRScreen *rr_screen, guint value, GError **error); === modified file 'plugins/power/gsd-power-manager.c' --- plugins/power/gsd-power-manager.c 2015-10-22 09:04:20 +0000 +++ plugins/power/gsd-power-manager.c 2015-11-13 07:45:35 +0000 @@ -189,6 +189,8 @@ /* Brightness */ gboolean backlight_available; gint pre_dim_brightness; /* level, not percentage */ + gfloat min_brightness_percentage; + gfloat max_brightness_percentage; /* Keyboard */ GDBusProxy *upower_kdb_proxy; @@ -2626,6 +2628,15 @@ } static void +brightness_configure (GsdPowerManager *manager) +{ + gint min = CLAMP (g_settings_get_int (manager->priv->settings, "min-brightness-percentage"), 0, 100); + gint max = CLAMP (g_settings_get_int (manager->priv->settings, "max-brightness-percentage"), min, 100); + manager->priv->min_brightness_percentage = min * 0.01; + manager->priv->max_brightness_percentage = max * 0.01; +} + +static void main_battery_or_ups_low_changed (GsdPowerManager *manager, gboolean is_low) { @@ -3013,6 +3024,11 @@ setup_lid_closed_action (manager); return; } + if (g_str_equal (key, "min-brightness-percentage") || + g_str_equal (key, "max-brightness-percentage")) { + brightness_configure (manager); + return; + } } static void @@ -3416,6 +3432,7 @@ /* coldplug the engine */ engine_coldplug (manager); idle_configure (manager); + brightness_configure (manager); manager->priv->xscreensaver_watchdog_timer_id = gsd_power_enable_screensaver_watchdog (); @@ -3590,12 +3607,21 @@ if (g_strcmp0 (method_name, "GetPercentage") == 0) { g_debug ("screen get percentage"); - value = backlight_get_percentage (manager->priv->rr_screen, &error); + value = backlight_get_percentage ( + manager->priv->rr_screen, + manager->priv->min_brightness_percentage, + manager->priv->max_brightness_percentage, + &error); } else if (g_strcmp0 (method_name, "SetPercentage") == 0) { g_debug ("screen set percentage"); g_variant_get (parameters, "(u)", &value_tmp); - ret = backlight_set_percentage (manager->priv->rr_screen, value_tmp, &error); + ret = backlight_set_percentage ( + manager->priv->rr_screen, + value_tmp, + manager->priv->min_brightness_percentage, + manager->priv->max_brightness_percentage, + &error); if (ret) { value = value_tmp; backlight_emit_changed (manager); @@ -3603,12 +3629,20 @@ } else if (g_strcmp0 (method_name, "StepUp") == 0) { g_debug ("screen step up"); - value = backlight_step_up (manager->priv->rr_screen, &error); + value = backlight_step_up ( + manager->priv->rr_screen, + manager->priv->min_brightness_percentage, + manager->priv->max_brightness_percentage, + &error); if (value != -1) backlight_emit_changed (manager); } else if (g_strcmp0 (method_name, "StepDown") == 0) { g_debug ("screen step down"); - value = backlight_step_down (manager->priv->rr_screen, &error); + value = backlight_step_down ( + manager->priv->rr_screen, + manager->priv->min_brightness_percentage, + manager->priv->max_brightness_percentage, + &error); if (value != -1) backlight_emit_changed (manager); } else {
-- ubuntu-desktop mailing list ubuntu-desktop@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop