[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