diff -Naur xfce4-power-manager-1.2.0/common/xfpm-brightness.c xfce4-power-manager-1.2.0-mod/common/xfpm-brightness.c --- xfce4-power-manager-1.2.0/common/xfpm-brightness.c 2012-04-28 22:40:06.000000000 +0200 +++ xfce4-power-manager-1.2.0-mod/common/xfpm-brightness.c 2013-02-16 15:03:54.000000000 +0100 @@ -92,7 +92,7 @@ } static gboolean -xfpm_brightness_xrandr_get_level (XfpmBrightness *brightness, RROutput output, long *current) +xfpm_brightness_xrandr_get_level (XfpmBrightness *brightness, RROutput output, gint *current) { unsigned long nitems; unsigned long bytes_after; @@ -124,7 +124,7 @@ } static gboolean -xfpm_brightness_xrandr_set_level (XfpmBrightness *brightness, RROutput output, long level) +xfpm_brightness_xrandr_set_level (XfpmBrightness *brightness, RROutput output, gint level) { gboolean ret = TRUE; @@ -225,24 +225,27 @@ } static gboolean -xfpm_brightness_xrand_up (XfpmBrightness *brightness, glong *new_level) +xfpm_brightness_xrand_up_or_down (XfpmBrightness *brightness, gint *new_level, gboolean up) { - long hw_level; + gint hw_level; gboolean ret = FALSE; - long set_level; + gint set_level; ret = xfpm_brightness_xrandr_get_level (brightness, brightness->priv->output, &hw_level); if ( !ret ) return FALSE; - if ( hw_level == brightness->priv->max_level ) + gint ref_level = up ? brightness->priv->max_level : brightness->priv->min_level; + + if ( hw_level == ref_level ) { - *new_level = brightness->priv->max_level; + *new_level = ref_level; return TRUE; } - set_level = MIN (hw_level + brightness->priv->step, brightness->priv->max_level ); + set_level = up ? MIN (hw_level + brightness->priv->step, brightness->priv->max_level ) : + MAX (hw_level - brightness->priv->step, brightness->priv->min_level); g_warn_if_fail (xfpm_brightness_xrandr_set_level (brightness, brightness->priv->output, set_level)); @@ -250,14 +253,14 @@ if ( !ret ) { - g_warning ("xfpm_brightness_xrand_up failed for %li", set_level); + g_warning ("xfpm_brightness_xrand_up_or_down failed for %li", set_level); return FALSE; } /* Nothing changed in the hardware*/ if ( *new_level == hw_level ) { - g_warning ("xfpm_brightness_xrand_up did not change the hw level to %li", set_level); + g_warning ("xfpm_brightness_xrand_up_or_down did not change the hw level to %li", set_level); return FALSE; } @@ -265,43 +268,15 @@ } static gboolean -xfpm_brightness_xrand_down (XfpmBrightness *brightness, long *new_level) +xfpm_brightness_xrand_up (XfpmBrightness *brightness, gint *new_level) { - long hw_level; - gboolean ret; - long set_level; - - ret = xfpm_brightness_xrandr_get_level (brightness, brightness->priv->output, &hw_level); - - if ( !ret ) - return FALSE; - - if ( hw_level == brightness->priv->min_level ) - { - *new_level = brightness->priv->min_level; - return TRUE; - } - - set_level = MAX (hw_level - brightness->priv->step, brightness->priv->min_level); - - g_warn_if_fail (xfpm_brightness_xrandr_set_level (brightness, brightness->priv->output, set_level)); - - ret = xfpm_brightness_xrandr_get_level (brightness, brightness->priv->output, new_level); - - if ( !ret ) - { - g_warning ("xfpm_brightness_xrand_down failed for %li", set_level); - return FALSE; - } - - /* Nothing changed in the hardware*/ - if ( *new_level == hw_level ) - { - g_warning ("xfpm_brightness_xrand_down did not change the hw level to %li", set_level); - return FALSE; - } - - return TRUE; + return xfpm_brightness_xrand_up_or_down(brightness, new_level, TRUE); +} + +static gboolean +xfpm_brightness_xrand_down (XfpmBrightness *brightness, gint *new_level) +{ + return xfpm_brightness_xrand_up_or_down(brightness, new_level, FALSE); } /* @@ -361,7 +336,7 @@ } static gboolean -xfpm_brightness_helper_get_level (XfpmBrightness *brg, glong *level) +xfpm_brightness_helper_get_level (XfpmBrightness *brg, gint *level) { int ret; @@ -406,9 +381,9 @@ } static gboolean -xfpm_brightness_helper_up (XfpmBrightness *brightness, glong *new_level) +xfpm_brightness_helper_up_or_down (XfpmBrightness *brightness, gint *new_level, gboolean up) { - glong hw_level; + gint hw_level; gboolean ret = FALSE; gint set_level; @@ -417,13 +392,16 @@ if ( !ret ) return FALSE; - if ( hw_level == brightness->priv->max_level ) + gint ref_level = up ? brightness->priv->max_level : brightness->priv->min_level; + + if ( hw_level == ref_level ) { - *new_level = brightness->priv->max_level; + *new_level = ref_level; return TRUE; } - set_level = MIN (hw_level + brightness->priv->step, brightness->priv->max_level ); + set_level = up ? MIN (hw_level + brightness->priv->step, brightness->priv->max_level) : + MAX (hw_level - brightness->priv->step, brightness->priv->min_level); g_warn_if_fail (xfpm_brightness_helper_set_level (brightness, set_level)); @@ -431,14 +409,14 @@ if ( !ret ) { - g_warning ("xfpm_brightness_helper_up failed for %d", set_level); + g_warning ("xfpm_brightness_helper_up_or_down failed for %d", set_level); return FALSE; } /* Nothing changed in the hardware*/ if ( *new_level == hw_level ) { - g_warning ("xfpm_brightness_helper_up did not change the hw level to %d", set_level); + g_warning ("xfpm_brightness_helper_up_or_down did not change the hw level to %d", set_level); return FALSE; } @@ -446,43 +424,15 @@ } static gboolean -xfpm_brightness_helper_down (XfpmBrightness *brightness, glong *new_level) +xfpm_brightness_helper_up (XfpmBrightness *brightness, gint *new_level) { - glong hw_level; - gboolean ret; - gint set_level; - - ret = xfpm_brightness_helper_get_level (brightness, &hw_level); - - if ( !ret ) - return FALSE; - - if ( hw_level == brightness->priv->min_level ) - { - *new_level = brightness->priv->min_level; - return TRUE; - } - - set_level = MAX (hw_level - brightness->priv->step, brightness->priv->min_level); - - g_warn_if_fail (xfpm_brightness_helper_set_level (brightness, set_level)); - - ret = xfpm_brightness_helper_get_level (brightness, new_level); - - if ( !ret ) - { - g_warning ("xfpm_brightness_helper_down failed for %d", set_level); - return FALSE; - } - - /* Nothing changed in the hardware*/ - if ( *new_level == hw_level ) - { - g_warning ("xfpm_brightness_helper_down did not change the hw level to %d", set_level); - return FALSE; - } - - return TRUE; + return xfpm_brightness_helper_up_or_down(brightness, new_level, TRUE); +} + +static gboolean +xfpm_brightness_helper_down (XfpmBrightness *brightness, gint *new_level) +{ + return xfpm_brightness_helper_up_or_down(brightness, new_level, FALSE); } #endif @@ -572,7 +522,7 @@ return FALSE; } -gboolean xfpm_brightness_up (XfpmBrightness *brightness, glong *new_level) +gboolean xfpm_brightness_up (XfpmBrightness *brightness, gint *new_level) { gboolean ret = FALSE; @@ -589,7 +539,7 @@ return ret; } -gboolean xfpm_brightness_down (XfpmBrightness *brightness, glong *new_level) +gboolean xfpm_brightness_down (XfpmBrightness *brightness, gint *new_level) { gboolean ret = FALSE; @@ -618,7 +568,7 @@ return brightness->priv->max_level; } -gboolean xfpm_brightness_get_level (XfpmBrightness *brightness, glong *level) +gboolean xfpm_brightness_get_level (XfpmBrightness *brightness, gint *level) { gboolean ret = FALSE; @@ -632,7 +582,7 @@ return ret; } -gboolean xfpm_brightness_set_level (XfpmBrightness *brightness, glong level) +gboolean xfpm_brightness_set_level (XfpmBrightness *brightness, gint level) { gboolean ret = FALSE; diff -Naur xfce4-power-manager-1.2.0/common/xfpm-brightness.h xfce4-power-manager-1.2.0-mod/common/xfpm-brightness.h --- xfce4-power-manager-1.2.0/common/xfpm-brightness.h 2012-04-28 22:40:06.000000000 +0200 +++ xfce4-power-manager-1.2.0-mod/common/xfpm-brightness.h 2013-02-16 12:40:15.000000000 +0100 @@ -51,20 +51,20 @@ gboolean xfpm_brightness_setup (XfpmBrightness *brightness); gboolean xfpm_brightness_up (XfpmBrightness *brightness, - glong *new_level); + gint *new_level); gboolean xfpm_brightness_down (XfpmBrightness *brightness, - glong *new_level); + gint *new_level); gboolean xfpm_brightness_has_hw (XfpmBrightness *brightness); gint xfpm_brightness_get_max_level (XfpmBrightness *brightness); gboolean xfpm_brightness_get_level (XfpmBrightness *brightness, - glong *level); + gint *level); gboolean xfpm_brightness_set_level (XfpmBrightness *brightness, - glong level); + gint level); gboolean xfpm_brightness_dim_down (XfpmBrightness *brightness); diff -Naur xfce4-power-manager-1.2.0/panel-plugins/brightness/brightness-button.c xfce4-power-manager-1.2.0-mod/panel-plugins/brightness/brightness-button.c --- xfce4-power-manager-1.2.0/panel-plugins/brightness/brightness-button.c 2012-04-28 22:40:06.000000000 +0200 +++ xfce4-power-manager-1.2.0-mod/panel-plugins/brightness/brightness-button.c 2013-02-16 15:09:06.000000000 +0100 @@ -186,7 +186,7 @@ brightness_button_popup_win (GtkWidget *widget, GdkEvent *ev, guint32 ev_time) { gint x, y; - glong current_level = 0; + gint current_level = 0; GdkDisplay *display; GdkScreen *screen; BrightnessButton *button; @@ -342,7 +342,7 @@ static void range_value_changed (GtkWidget *widget, BrightnessButton *button) { - glong range_level, hw_level; + gint range_level, hw_level; range_level = (gint) gtk_range_get_value (GTK_RANGE (button->priv->range)); @@ -428,8 +428,8 @@ static void brightness_button_up (BrightnessButton *button) { - glong level; - glong max_level; + gint level; + gint max_level; xfpm_brightness_get_level (button->priv->brightness, &level); max_level = xfpm_brightness_get_max_level (button->priv->brightness); @@ -443,7 +443,7 @@ static void brightness_button_down (BrightnessButton *button) { - glong level; + gint level; xfpm_brightness_get_level (button->priv->brightness, &level); if ( level != 0 ) diff -Naur xfce4-power-manager-1.2.0/src/xfpm-backlight.c xfce4-power-manager-1.2.0-mod/src/xfpm-backlight.c --- xfce4-power-manager-1.2.0/src/xfpm-backlight.c 2012-04-28 22:40:06.000000000 +0200 +++ xfce4-power-manager-1.2.0-mod/src/xfpm-backlight.c 2013-02-16 15:17:36.000000000 +0100 @@ -72,8 +72,8 @@ gboolean has_hw; gboolean on_battery; - glong last_level; - glong max_level; + gint last_level; + gint max_level; gboolean dimmed; gboolean block; @@ -84,34 +84,37 @@ static void xfpm_backlight_dim_brightness (XfpmBacklight *backlight) { - gboolean ret; - + if (xfpm_power_get_mode (backlight->priv->power) == XFPM_POWER_MODE_NORMAL ) { - glong dim_level; - - g_object_get (G_OBJECT (backlight->priv->conf), - backlight->priv->on_battery ? BRIGHTNESS_LEVEL_ON_BATTERY : BRIGHTNESS_LEVEL_ON_AC, &dim_level, - NULL); - - ret = xfpm_brightness_get_level (backlight->priv->brightness, &backlight->priv->last_level); + + gboolean ret = xfpm_brightness_get_level (backlight->priv->brightness, &backlight->priv->last_level); if ( !ret ) { - g_warning ("Unable to get current brightness level"); - return; + g_warning ("Unable to get current brightness level"); } - - dim_level = dim_level * backlight->priv->max_level / 100; - - /** - * Only reduce if the current level is brighter than - * the configured dim_level - **/ - if (backlight->priv->last_level > dim_level) + else { - XFPM_DEBUG ("Current brightness level before dimming : %li, new %li", backlight->priv->last_level, dim_level); - backlight->priv->dimmed = xfpm_brightness_set_level (backlight->priv->brightness, dim_level); + gint dim_level; + + g_object_get (G_OBJECT (backlight->priv->conf), + backlight->priv->on_battery ? BRIGHTNESS_LEVEL_ON_BATTERY : BRIGHTNESS_LEVEL_ON_AC, + &dim_level, + NULL); + + dim_level = dim_level * backlight->priv->max_level / 100; + + /** + * Only reduce if the current level is brighter than + * the configured dim_level + **/ + if (backlight->priv->last_level > dim_level) + { + XFPM_DEBUG ("Current brightness level before dimming : %li, new %li", + backlight->priv->last_level, dim_level); + backlight->priv->dimmed = xfpm_brightness_set_level (backlight->priv->brightness, dim_level); + } } } } @@ -284,7 +287,7 @@ static void xfpm_backlight_button_pressed_cb (XfpmButton *button, XfpmButtonKey type, XfpmBacklight *backlight) { - glong level; + gint level; gboolean ret = TRUE; gboolean enable_brightness, show_popup;