[Goodies-commits] r6919 - in xfce4-power-manager/trunk: . libxfpm src

Ali Abdallah aliov at xfce.org
Mon Mar 16 15:39:17 CET 2009


Author: aliov
Date: 2009-03-16 14:39:17 +0000 (Mon, 16 Mar 2009)
New Revision: 6919

Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/libxfpm/hal-iface.c
   xfce4-power-manager/trunk/src/xfpm-brightness-hal.c
   xfce4-power-manager/trunk/src/xfpm-cpu.c
   xfce4-power-manager/trunk/src/xfpm-idle.c
Log:
Set brightness idle level to the last user selected level+Fix a bug in SetCpuFreqGovernor that was causing a proxy disconnection

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-03-16 11:18:45 UTC (rev 6918)
+++ xfce4-power-manager/trunk/ChangeLog	2009-03-16 14:39:17 UTC (rev 6919)
@@ -1,4 +1,7 @@
 
+2009-03-16 15:39 Ali aliov at xfce.org 
+	 * : Set brightness idle level to the last user selected level+Fix a bug in SetCpuFreqGovernor that was causing a proxy disconnection
+
 2009-03-15 13:57 Ali aliov at xfce.org 
 	 * : Added some icons from gpm+Catch brightness key to avoid display flickering
 

Modified: xfce4-power-manager/trunk/libxfpm/hal-iface.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-iface.c	2009-03-16 11:18:45 UTC (rev 6918)
+++ xfce4-power-manager/trunk/libxfpm/hal-iface.c	2009-03-16 14:39:17 UTC (rev 6919)
@@ -420,6 +420,8 @@
     g_return_val_if_fail (iface->priv->caller_privilege, FALSE);
     g_return_val_if_fail (iface->priv->cpu_freq_iface_can_be_used, FALSE);
     
+    gboolean ret = FALSE;
+    
     DBusGProxy *proxy = dbus_g_proxy_new_for_name (iface->priv->bus,
 						   "org.freedesktop.Hal",
 						   "/org/freedesktop/Hal/devices/computer",
@@ -430,16 +432,14 @@
 	goto out;
     }
     
-    dbus_g_proxy_call (proxy, "SetCPUFreqGovernor", error,
-		       G_TYPE_STRING, &governor,
-		       G_TYPE_INVALID,
-		       G_TYPE_INVALID);
-    
+    ret = dbus_g_proxy_call (proxy, "SetCPUFreqGovernor", error,
+	  		     G_TYPE_STRING, governor,
+			     G_TYPE_INVALID,
+			     G_TYPE_INVALID);
+    		     
     g_object_unref (proxy);
-    
 out:
-    
-    return FALSE;
+    return ret;
 }
 
 void hal_iface_free_string_array (gchar **array)

Modified: xfce4-power-manager/trunk/src/xfpm-brightness-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-brightness-hal.c	2009-03-16 11:18:45 UTC (rev 6918)
+++ xfce4-power-manager/trunk/src/xfpm-brightness-hal.c	2009-03-16 14:39:17 UTC (rev 6919)
@@ -62,8 +62,6 @@
 
 struct XfpmBrightnessHalPrivate
 {
-    HalManager     *manager;
-    HalDevice      *device;
     DBusGProxy     *proxy;
     
     XfpmXfconf     *conf;
@@ -71,12 +69,15 @@
     XfpmButtonXf86 *button;
     
     gint            max_level;
-    guint           on_battery_timeout;
-    guint 	    on_ac_timeout;
+    gint            hw_level;
+    gboolean        brightness_in_hw;
     gboolean        hw_found;
     gboolean        block;
     
     gboolean        on_battery;
+    
+    guint           on_battery_timeout;
+    guint 	    on_ac_timeout;
 };
 
 enum
@@ -103,13 +104,12 @@
 {
     brg->priv = XFPM_BRIGHTNESS_HAL_GET_PRIVATE(brg);
     
-    brg->priv->manager 		= NULL;
-    brg->priv->device           = NULL;
     brg->priv->proxy    	= NULL;
     brg->priv->idle             = NULL;
     brg->priv->hw_found 	= FALSE;
     brg->priv->on_battery       = FALSE;
     brg->priv->block            = FALSE;
+    brg->priv->brightness_in_hw = FALSE;
     brg->priv->max_level        = 0;
 }
 
@@ -120,18 +120,12 @@
 
     brg = XFPM_BRIGHTNESS_HAL(object);
     
-    if ( brg->priv->manager )
-	g_object_unref (brg->priv->manager);
-	
     if ( brg->priv->proxy )
 	g_object_unref (brg->priv->proxy);
     
     if ( brg->priv->idle )
 	g_object_unref (brg->priv->idle);
 	
-    if ( brg->priv->device )
-	g_object_unref (brg->priv->device);
-	
     if ( brg->priv->conf )
 	g_object_unref (brg->priv->conf);
 	
@@ -192,73 +186,104 @@
 }
 
 static void
-xfpm_brightness_hal_device_changed_cb (HalDevice *device,
-				       const gchar *udi,
-				       const gchar *key, 
-				       gboolean is_removed,
-				       gboolean is_added,
-				       XfpmBrightnessHal *brg)
+xfpm_brightness_hal_set_proxy (XfpmBrightnessHal *brg, const gchar *udi)
 {
-    g_print("YALLA key=%s\n", key);
-    if ( xfpm_strequal (key, "laptop_panel.num_levels") )
-    {
-	gint level = hal_device_get_property_int (device, "laptop_panel.num_levels");
-	TRACE("Brigthness num_levels=%d\n", level);
-    }
-}
-
-static void
-xfpm_brightness_hal_get_device (XfpmBrightnessHal *brg, const gchar *udi)
-{
     DBusGConnection *bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, NULL);
     
     brg->priv->hw_found = TRUE;
-    hal_device_watch (brg->priv->device);
     
-    g_signal_connect (brg->priv->device, "device-changed",
-		      G_CALLBACK(xfpm_brightness_hal_device_changed_cb), brg);
-		      
     brg->priv->proxy = dbus_g_proxy_new_for_name (bus,
 		   			          "org.freedesktop.Hal",
 						  udi,
 					          "org.freedesktop.Hal.Device.LaptopPanel");
-    
+     
     if ( !brg->priv->proxy )
 	g_warning ("Unable to get proxy for device %s\n", udi);
-	
+}
+
+static void
+xfpm_brightness_hal_get_device (XfpmBrightnessHal *brg, const gchar *udi)
+{
+    HalDevice *device = hal_device_new ();
+    hal_device_set_udi (device, udi);
+
     brg->priv->max_level = 
-	hal_device_get_property_int (brg->priv->device, "laptop_panel.num_levels");
+	hal_device_get_property_int (device, "laptop_panel.num_levels");
+    
+    if ( hal_device_has_key (device, "laptop_panel.brightness_in_hardware") )
+	brg->priv->brightness_in_hw = hal_device_get_property_bool (device ,"laptop_panel.brightness_in_hardware");
 	
     TRACE ("laptop_panel.num_levels=%d\n", brg->priv->max_level);
+    
+    g_object_unref (device);
 }
 
+
 static gboolean
 xfpm_brightness_hal_setup (XfpmBrightnessHal *brg)
 {
     gchar **udi = NULL;
 
-    brg->priv->manager = hal_manager_new ();
-    brg->priv->device = hal_device_new ();
+    HalManager *manager = hal_manager_new ();
     
-    udi = hal_manager_find_device_by_capability (brg->priv->manager, "laptop_panel");
+    udi = hal_manager_find_device_by_capability (manager, "laptop_panel");
     
     if ( !udi )
+    {
+	g_object_unref ( manager);
     	return FALSE;
+    }
 	
-    hal_device_set_udi (brg->priv->device, udi[0]);
+    TRACE ("Found laptop_panel with udi=%s\n", udi[0]);
+    xfpm_brightness_hal_get_device (brg, udi[0]);
+    xfpm_brightness_hal_set_proxy (brg, udi[0]);
+
+    brg->priv->hw_level = xfpm_brightness_hal_get_level (brg);
+    TRACE ("Current hw level =%d\n", brg->priv->hw_level);
+    
+    hal_manager_free_string_array (udi);
+    return TRUE;
+}
+
+static void
+xfpm_brightness_hal_up (XfpmBrightnessHal *brg)
+{
+    if ( brg->priv->brightness_in_hw )
+	return;
+    
+    if ( brg->priv->hw_level != brg->priv->max_level -2 )
+    {
+	xfpm_brightness_hal_set_level (brg, brg->priv->hw_level + 1 );
+	brg->priv->hw_level = xfpm_brightness_hal_get_level (brg);
+    }
+}
+
+static void
+xfpm_brightness_hal_down (XfpmBrightnessHal *brg)
+{
+    if ( brg->priv->brightness_in_hw )
+	return;
 	
-    if ( hal_device_has_key (brg->priv->device, "laptop_panel.num_levels") )
+    if ( brg->priv->hw_level != 0)
     {
-	TRACE ("Found laptop_panel with udi=%s\n", udi[0]);
-	xfpm_brightness_hal_get_device (brg, udi[0]);
+	xfpm_brightness_hal_set_level (brg, brg->priv->hw_level - 1 );
+	brg->priv->hw_level = xfpm_brightness_hal_get_level (brg);
     }
-    else
+}
+
+static void
+xfpm_brightness_hal_button_pressed_cb (XfpmButtonXf86 *button, XfpmXF86Button type, XfpmBrightnessHal *brg)
+{
+    if ( type == BUTTON_MON_BRIGHTNESS_UP )
     {
-	g_object_unref (brg->priv->device);
+	brg->priv->block = TRUE;
+	xfpm_brightness_hal_up (brg);
     }
-
-    hal_manager_free_string_array (udi);
-    return TRUE;
+    else if ( type == BUTTON_MON_BRIGHTNESS_DOWN )
+    {
+	brg->priv->block = TRUE;
+	xfpm_brightness_hal_down (brg);
+    }
 }
 
 static void
@@ -271,8 +296,8 @@
     
     level = xfpm_brightness_hal_get_level(brg);
      
-    if ( level != brg->priv->max_level -1 )
-	    xfpm_brightness_hal_set_level(brg, brg->priv->max_level -1 );
+    if ( level != brg->priv->hw_level )
+	    xfpm_brightness_hal_set_level(brg, brg->priv->hw_level);
 }
 
 static void
@@ -378,13 +403,6 @@
 	xfpm_brightness_hal_set_timeouts (brg);
 }
 
-static void
-xfpm_brightness_hal_button_pressed_cb (XfpmButtonXf86 *button, XfpmXF86Button type, XfpmBrightnessHal *brg)
-{
-    if ( type == BUTTON_MON_BRIGHTNESS_DOWN || type == BUTTON_MON_BRIGHTNESS_UP )
-	brg->priv->block = TRUE;
-}
-
 XfpmBrightnessHal *
 xfpm_brightness_hal_new ()
 {

Modified: xfce4-power-manager/trunk/src/xfpm-cpu.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-cpu.c	2009-03-16 11:18:45 UTC (rev 6918)
+++ xfce4-power-manager/trunk/src/xfpm-cpu.c	2009-03-16 14:39:17 UTC (rev 6919)
@@ -76,7 +76,6 @@
     if (! hal_iface_set_cpu_governor(cpu->priv->iface, governor, &error))
     {
     	g_critical ("Unable to set CPU governor to %s: %s\n", governor, error->message);
-	g_error_free (error);
     }
 }
 
@@ -138,10 +137,8 @@
 	    TRACE ("Settings cpu governor to powersave");
 	    xfpm_cpu_set_governor (cpu, "powersave");
 	}
-	return;
     }
     g_free (current_governor);
-
 }
 
 static gboolean

Modified: xfce4-power-manager/trunk/src/xfpm-idle.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-idle.c	2009-03-16 11:18:45 UTC (rev 6918)
+++ xfce4-power-manager/trunk/src/xfpm-idle.c	2009-03-16 14:39:17 UTC (rev 6919)
@@ -215,7 +215,6 @@
     
     if ( alarm )
     {
-	g_print("Alarm id=%d\n",alarm->id);
 	if (alarm->id != 0 )
 	{
 	    g_signal_emit (G_OBJECT(idle), signals[ALARM_TIMEOUT], 0, alarm->id );




More information about the Goodies-commits mailing list