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

Ali Abdallah aliov at xfce.org
Wed Apr 22 09:52:39 CEST 2009


Author: aliov
Date: 2009-04-22 07:52:39 +0000 (Wed, 22 Apr 2009)
New Revision: 7269

Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/libxfpm/hal-device.c
   xfce4-power-manager/trunk/libxfpm/hal-device.h
   xfce4-power-manager/trunk/libxfpm/hal-power.c
   xfce4-power-manager/trunk/libxfpm/hal-power.h
   xfce4-power-manager/trunk/src/xfpm-supply.c
Log:
Enable set hal power save

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-04-21 19:57:43 UTC (rev 7268)
+++ xfce4-power-manager/trunk/ChangeLog	2009-04-22 07:52:39 UTC (rev 7269)
@@ -1,4 +1,7 @@
 
+2009-04-22  9:52 Ali aliov at xfce.org 
+	 * : Enable set hal power save
+
 2009-04-20 10:24 Ali aliov at xfce.org 
 	 * : Provide the possibility to disable CPU freq control+don't compile the cpu governor code if we aren't on Linux
 

Modified: xfce4-power-manager/trunk/libxfpm/hal-device.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-device.c	2009-04-21 19:57:43 UTC (rev 7268)
+++ xfce4-power-manager/trunk/libxfpm/hal-device.c	2009-04-22 07:52:39 UTC (rev 7269)
@@ -333,30 +333,6 @@
     return value;
 }
 
-gboolean hal_device_set_property_int (HalDevice *device, const gchar *property, gint value)
-{
-    g_return_val_if_fail (HAL_IS_DEVICE(device), FALSE);
-    g_return_val_if_fail (device->priv->udi != NULL, FALSE);
-    
-    GError *error = NULL;
-    gboolean ret;
-    
-    ret = dbus_g_proxy_call (device->priv->proxy, "SetPropertyInteger", &error,
-			     G_TYPE_STRING, property,
-			     G_TYPE_INT, value,
-			     G_TYPE_INVALID,
-			     G_TYPE_INVALID);
-    
-    if ( error )
-    {
-	g_critical ("Error setting int value %d on device %s in property %s: %s",
-		     value, device->priv->udi, property, error->message);
-	g_error_free (error);
-    }
-    
-    return ret;
-}
-
 gchar *hal_device_get_property_string  (HalDevice *device, const gchar *property)
 {
     g_return_val_if_fail (HAL_IS_DEVICE(device), NULL);

Modified: xfce4-power-manager/trunk/libxfpm/hal-device.h
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-device.h	2009-04-21 19:57:43 UTC (rev 7268)
+++ xfce4-power-manager/trunk/libxfpm/hal-device.h	2009-04-22 07:52:39 UTC (rev 7269)
@@ -70,10 +70,6 @@
 gboolean		  hal_device_get_property_bool    (HalDevice *device,
 							   const gchar *property);
 
-gboolean                  hal_device_set_property_int     (HalDevice *device,
-							   const gchar *property,
-							   gint value);
-							   
 gint			  hal_device_get_property_int     (HalDevice *device,
 							   const gchar *property);
 									 

Modified: xfce4-power-manager/trunk/libxfpm/hal-power.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-power.c	2009-04-21 19:57:43 UTC (rev 7268)
+++ xfce4-power-manager/trunk/libxfpm/hal-power.c	2009-04-22 07:52:39 UTC (rev 7269)
@@ -27,6 +27,7 @@
 #include <string.h>
 
 #include <glib.h>
+#include <dbus/dbus-glib.h>
 
 #include "hal-manager.h"
 #include "hal-power.h"
@@ -132,8 +133,6 @@
 {
     g_signal_emit (power, signals[BATTERY_REMOVED], 0, battery);
     
-    //g_object_unref (battery);
-    
     if (!g_hash_table_remove(power->priv->hash, udi))
     	g_warning ("Unable to removed object from hash\n");
 }
@@ -239,6 +238,68 @@
     
 }
 
+static gboolean
+hal_power_is_power_save_set (void)
+{
+    HalDevice *device;
+    gboolean   val;
+    
+    device = hal_device_new ();
+    
+    hal_device_set_udi (device, "/org/freedesktop/Hal/devices/computer");
+    
+    val = hal_device_get_property_bool (device, "power_management.is_powersave_set");
+    
+    g_object_unref (device);
+    
+    return val;
+}
+
+static gboolean 
+hal_power_set_power_save_internal (HalPower *power, gboolean set)
+{
+    DBusGConnection *bus;
+    DBusGProxy      *proxy;
+    GError          *error = NULL;
+    gint             ret = 0;
+    
+    g_return_val_if_fail (HAL_IS_POWER (power), FALSE);
+
+    if ( hal_power_is_power_save_set () == set )
+	return TRUE;
+    
+    bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, NULL);
+    
+    proxy = dbus_g_proxy_new_for_name (bus, 
+				       "org.freedesktop.Hal",
+				       "/org/freedesktop/Hal/devices/computer",
+				       "org.freedesktop.Hal.Device.SystemPowerManagement");
+				       
+    if ( !proxy )
+    {
+	g_warning ("Unable to get proxy for /org/freedesktop/Hal/devices/computer");
+	dbus_g_connection_unref (bus);
+	return FALSE;
+    }
+    
+    dbus_g_proxy_call (proxy, "SetPowerSave", &error,
+		       G_TYPE_BOOLEAN, set,
+		       G_TYPE_INVALID,
+		       G_TYPE_INT, &ret,
+		       G_TYPE_INVALID);
+    
+    dbus_g_connection_unref (bus);
+    g_object_unref (proxy);
+    
+    if ( error )
+    {
+	g_warning ("%s: ", error->message);
+	g_error_free (error);
+	return FALSE;
+    }
+    return ret == 0 ? TRUE : FALSE;
+}
+
 static void
 hal_power_init(HalPower *power)
 {
@@ -314,3 +375,17 @@
 out:
    return array;
 }
+
+gboolean hal_power_set_power_save  (HalPower *power)
+{
+    g_return_val_if_fail (HAL_IS_POWER (power), FALSE);
+
+    return hal_power_set_power_save_internal (power, TRUE);
+}
+
+gboolean hal_power_unset_power_save (HalPower *power)
+{
+    g_return_val_if_fail (HAL_IS_POWER (power), FALSE);
+
+    return hal_power_set_power_save_internal (power, FALSE);
+}

Modified: xfce4-power-manager/trunk/libxfpm/hal-power.h
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-power.h	2009-04-21 19:57:43 UTC (rev 7268)
+++ xfce4-power-manager/trunk/libxfpm/hal-power.h	2009-04-22 07:52:39 UTC (rev 7269)
@@ -57,6 +57,13 @@
 HalPower       	       *hal_power_new             (void);
 
 GPtrArray      	       *hal_power_get_batteries   (HalPower *power);
+
+gboolean		hal_power_set_power_save  (HalPower *power);
+
+gboolean                hal_power_set_power_save  (HalPower *power);
+
+gboolean                hal_power_unset_power_save(HalPower *power);
+
 G_END_DECLS
 
 #endif /* __HAL_POWER_H */

Modified: xfce4-power-manager/trunk/src/xfpm-supply.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-supply.c	2009-04-21 19:57:43 UTC (rev 7268)
+++ xfce4-power-manager/trunk/src/xfpm-supply.c	2009-04-22 07:52:39 UTC (rev 7269)
@@ -440,9 +440,25 @@
 }
 
 static void
+xfpm_supply_save_power (XfpmSupply *supply)
+{
+    gboolean save_power;
+    
+    save_power = xfpm_xfconf_get_property_bool (supply->priv->conf, POWER_SAVE_ON_BATTERY);
+    
+    if ( save_power == FALSE )
+	hal_power_unset_power_save (supply->priv->power);
+    else if ( supply->priv->adapter_present )
+	hal_power_unset_power_save (supply->priv->power);
+    else 
+	hal_power_set_power_save (supply->priv->power);
+}
+
+static void
 xfpm_supply_adapter_changed_cb (XfpmAdapter *adapter, gboolean present, XfpmSupply *supply)
 {
     supply->priv->adapter_present = present;
+    xfpm_supply_save_power (supply);
 }
 
 /*




More information about the Goodies-commits mailing list