[Xfce4-commits] <xfce4-power-manager:0.8-hal-based> Handle weired negative brightness level reported by HAL on some systems.

Ali Abdallah noreply at xfce.org
Tue Mar 2 18:26:01 CET 2010


Updating branch refs/heads/0.8-hal-based
         to b25c5a58c688476e70244980005fa596611ab59f (commit)
       from ae4f70d52bbc098c2cec5de1d1b979eb0bff87ac (commit)

commit b25c5a58c688476e70244980005fa596611ab59f
Author: Ali Abdallah <aliov at xfce.org>
Date:   Tue Mar 2 18:21:00 2010 +0100

    Handle weired negative brightness level reported by HAL on some systems.

 src/xfpm-brightness-hal.c |   30 +++++++++++++++++++-----------
 src/xfpm-brightness-hal.h |    4 ++--
 2 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/src/xfpm-brightness-hal.c b/src/xfpm-brightness-hal.c
index 0b0c7d3..7b0c051 100644
--- a/src/xfpm-brightness-hal.c
+++ b/src/xfpm-brightness-hal.c
@@ -61,9 +61,9 @@ struct XfpmBrightnessHalPrivate
     XfpmAdapter     *adapter;
     XfpmScreenSaver *saver;
     
-    guint           max_level;
-    guint           hw_level;
-    guint           step;
+    gint            max_level;
+    gint            hw_level;
+    gint            step;
     gboolean        brightness_in_hw;
     gboolean        hw_found;
     gboolean        block;
@@ -180,6 +180,16 @@ xfpm_brightness_hal_read_hal_level (XfpmBrightnessHal *brg)
 	g_warning ("Error getting brightness level: %s\n", error->message);
 	g_error_free (error);
     }
+    
+    /* 
+     * Sometimes HAL send us negative values, it seems to be
+     * a bug in rounding in bash shell
+     */
+    if (brg->priv->hw_level < 0)
+    {
+	g_warning ("Negative value returned by HAL, assuming 0");
+	brg->priv->hw_level = 0;
+    }
 }
 
 static gboolean
@@ -231,7 +241,6 @@ xfpm_brightness_hal_up (XfpmBrightnessHal *brg)
     
 signal:
     xfpm_brightness_hal_read_hal_level (brg);
-    
     if ( show_popup )
 	g_signal_emit (G_OBJECT (brg), signals [BRIGHTNESS_UP], 0, brg->priv->hw_level);
 }
@@ -248,7 +257,7 @@ xfpm_brightness_hal_down (XfpmBrightnessHal *brg)
     
     if ( enable_brightness == FALSE || brg->priv->brightness_in_hw)
 	goto signal;
-	
+
     if ( brg->priv->hw_level != 0)
     {
 	TRACE("Brightness key down");
@@ -257,7 +266,6 @@ xfpm_brightness_hal_down (XfpmBrightnessHal *brg)
     
 signal:
     xfpm_brightness_hal_read_hal_level (brg);
-    
     if ( show_popup )
 	g_signal_emit (G_OBJECT (brg), signals [BRIGHTNESS_UP], 0, brg->priv->hw_level);
 }
@@ -281,7 +289,7 @@ static void
 xfpm_brightness_hal_reset_cb (EggIdletime *idle, XfpmBrightnessHal *brg)
 {
     GError *error = NULL;
-    guint level;
+    gint level;
     
     if (brg->priv->block)
 	return;
@@ -309,7 +317,7 @@ static void
 xfpm_brightness_timeout_on_ac (XfpmBrightnessHal *brg)
 {
     GError *error = NULL;
-    guint level;
+    gint level;
     
     if ( brg->priv->on_battery )
 	    return;
@@ -336,7 +344,7 @@ static void
 xfpm_brightness_timeout_on_battery (XfpmBrightnessHal *brg)
 {
     GError *error = NULL;
-    guint level;
+    gint level;
     
     if ( !brg->priv->on_battery )
 	    return;
@@ -579,14 +587,14 @@ gboolean xfpm_brightness_hal_has_hw (XfpmBrightnessHal *brg)
     return brg->priv->hw_found;
 }
 
-void xfpm_brightness_hal_update_level (XfpmBrightnessHal *brg, guint level)
+void xfpm_brightness_hal_update_level (XfpmBrightnessHal *brg, gint level)
 {
     g_return_if_fail (XFPM_IS_BRIGHTNESS_HAL (brg));
     
     brg->priv->hw_level = level;
 }
 
-guint xfpm_brightness_hal_get_max_level (XfpmBrightnessHal *brg)
+gint xfpm_brightness_hal_get_max_level (XfpmBrightnessHal *brg)
 {
     g_return_val_if_fail (XFPM_IS_BRIGHTNESS_HAL (brg), 0);
     
diff --git a/src/xfpm-brightness-hal.h b/src/xfpm-brightness-hal.h
index b574677..c7b25dc 100644
--- a/src/xfpm-brightness-hal.h
+++ b/src/xfpm-brightness-hal.h
@@ -56,9 +56,9 @@ XfpmBrightnessHal      		       *xfpm_brightness_hal_new             (void);
 gboolean                                xfpm_brightness_hal_has_hw          (XfpmBrightnessHal *brg) G_GNUC_PURE;
 
 void                                    xfpm_brightness_hal_update_level    (XfpmBrightnessHal *brg,
-									     guint level);
+									     gint level);
 
-guint                                   xfpm_brightness_hal_get_max_level   (XfpmBrightnessHal *brg) G_GNUC_PURE;									     
+gint                                    xfpm_brightness_hal_get_max_level   (XfpmBrightnessHal *brg) G_GNUC_PURE;									     
 G_END_DECLS
 
 #endif /* __XFPM_BRIGHTNESS_HAL_H */



More information about the Xfce4-commits mailing list