[gnome-power-manager] Use the correct backlight step value when using the legacy fallback device
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-power-manager] Use the correct backlight step value when using the legacy fallback device
- Date: Tue, 31 Aug 2010 17:29:58 +0000 (UTC)
commit 7eb15d541a4e5071d2916342c83c3ceeaacb3d60
Author: Will Woods <wwoods redhat com>
Date: Tue Aug 31 13:36:03 2010 +0100
Use the correct backlight step value when using the legacy fallback device
The 'legacy fallback' backlight handling code in gnome-power-manager
increments/decrements the backlight value by one whenever the brightness
buttons are pressed.
On systems like the Apple MacBook, where the backlight has upwards of 1024
brightness levels, this doesn't work.
The attached patch uses the gpm_brightness_get_step function (like the
xrandr-based code does) to properly step the backlight value.
Signed-off-by: Richard Hughes <richard hughsie com>
src/gpm-brightness.c | 26 ++++++++++++++++++++++----
1 files changed, 22 insertions(+), 4 deletions(-)
---
diff --git a/src/gpm-brightness.c b/src/gpm-brightness.c
index bff3411..231a065 100644
--- a/src/gpm-brightness.c
+++ b/src/gpm-brightness.c
@@ -675,6 +675,7 @@ gboolean
gpm_brightness_up (GpmBrightness *brightness, gboolean *hw_changed)
{
gboolean ret = FALSE;
+ guint step;
g_return_val_if_fail (GPM_IS_BRIGHTNESS (brightness), FALSE);
@@ -695,8 +696,15 @@ gpm_brightness_up (GpmBrightness *brightness, gboolean *hw_changed)
if (brightness->priv->extension_levels < 0)
brightness->priv->extension_levels = gpm_brightness_helper_get_value ("get-max-brightness");
brightness->priv->extension_current = gpm_brightness_helper_get_value ("get-brightness");
- if (brightness->priv->extension_current < brightness->priv->extension_levels)
- ret = gpm_brightness_helper_set_value ("set-brightness", ++brightness->priv->extension_current);
+
+ /* increase by the step, limiting to the maximum possible levels */
+ if (brightness->priv->extension_current < brightness->priv->extension_levels) {
+ step = gpm_brightness_get_step (brightness->priv->extension_levels);
+ brightness->priv->extension_current += step;
+ if (brightness->priv->extension_current > brightness->priv->extension_levels)
+ brightness->priv->extension_current = brightness->priv->extension_levels;
+ ret = gpm_brightness_helper_set_value ("set-brightness", brightness->priv->extension_current);
+ }
if (hw_changed != NULL)
*hw_changed = ret;
brightness->priv->cache_trusted = FALSE;
@@ -718,6 +726,7 @@ gboolean
gpm_brightness_down (GpmBrightness *brightness, gboolean *hw_changed)
{
gboolean ret = FALSE;
+ guint step;
g_return_val_if_fail (GPM_IS_BRIGHTNESS (brightness), FALSE);
@@ -735,9 +744,18 @@ gpm_brightness_down (GpmBrightness *brightness, gboolean *hw_changed)
/* legacy fallback */
if (!ret) {
+ if (brightness->priv->extension_levels < 0)
+ brightness->priv->extension_levels = gpm_brightness_helper_get_value ("get-max-brightness");
brightness->priv->extension_current = gpm_brightness_helper_get_value ("get-brightness");
- if (brightness->priv->extension_current > 0)
- ret = gpm_brightness_helper_set_value ("set-brightness", --brightness->priv->extension_current);
+
+ /* decrease by the step, limiting to zero */
+ if (brightness->priv->extension_current > 0) {
+ step = gpm_brightness_get_step (brightness->priv->extension_levels);
+ brightness->priv->extension_current -= step;
+ if (brightness->priv->extension_current < 0)
+ brightness->priv->extension_current = 0;
+ ret = gpm_brightness_helper_set_value ("set-brightness", brightness->priv->extension_current);
+ }
if (hw_changed != NULL)
*hw_changed = ret;
brightness->priv->cache_trusted = FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]