[Goodies-commits] r6892 - in xfce4-power-manager/trunk: . libxfpm src
Ali Abdallah
aliov at xfce.org
Fri Mar 13 16:31:40 CET 2009
Author: aliov
Date: 2009-03-13 15:31:39 +0000 (Fri, 13 Mar 2009)
New Revision: 6892
Modified:
xfce4-power-manager/trunk/ChangeLog
xfce4-power-manager/trunk/libxfpm/hal-battery.c
xfce4-power-manager/trunk/libxfpm/hal-device.c
xfce4-power-manager/trunk/libxfpm/hal-device.h
xfce4-power-manager/trunk/libxfpm/hal-manager.c
xfce4-power-manager/trunk/libxfpm/hal-manager.h
xfce4-power-manager/trunk/libxfpm/hal-power.c
xfce4-power-manager/trunk/src/xfpm-adapter.c
xfce4-power-manager/trunk/src/xfpm-lid-hal.c
xfce4-power-manager/trunk/src/xfpm-supply.c
Log:
Move common code to hal-device+ fix issue with the apater of the previous revision
Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog 2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/ChangeLog 2009-03-13 15:31:39 UTC (rev 6892)
@@ -1,4 +1,7 @@
+2009-03-13 16:31 Ali aliov at xfce.org
+ * : Move common code to hal-device+ fix issue with the apater of the previous revision
+
2009-03-13 14:01 Ali aliov at xfce.org
* : Dropping the libhal dependency, just doing simple proxy calls to get informations from hald
Modified: xfce4-power-manager/trunk/libxfpm/hal-battery.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-battery.c 2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-battery.c 2009-03-13 15:31:39 UTC (rev 6892)
@@ -381,15 +381,16 @@
static HalDeviceType
hal_battery_get_device_type (HalBattery *battery)
{
- gchar *udi = NULL;
+ const gchar *udi;
gchar *type = NULL;
+
HalDeviceType type_enum = HAL_DEVICE_TYPE_UNKNOWN;
- g_object_get (G_OBJECT(battery), "udi", &udi, NULL);
+ udi = hal_device_get_udi (HAL_DEVICE(battery));
g_return_val_if_fail (udi != NULL, HAL_DEVICE_TYPE_UNKNOWN);
- type = hal_manager_get_device_property_string (battery->priv->manager, udi, "battery.type");
+ type = hal_device_get_property_string (HAL_DEVICE(battery), "battery.type");
if ( type )
{
@@ -397,49 +398,44 @@
g_free(type);
}
- g_free (udi);
+ //g_free (udi);
return type_enum;
}
static void
hal_battery_refresh_all (HalBattery *battery)
{
- gchar *udi = NULL;
- g_object_get (G_OBJECT(battery), "udi", &udi, NULL);
-
- g_return_if_fail (udi != NULL);
-
battery->priv->is_present =
- hal_manager_get_device_property_bool(battery->priv->manager, udi, "battery.present");
+ hal_device_get_property_bool(HAL_DEVICE(battery), "battery.present");
battery->priv->is_charging =
- hal_manager_get_device_property_bool(battery->priv->manager, udi, "battery.rechargeable.is_charging");
+ hal_device_get_property_bool(HAL_DEVICE(battery), "battery.rechargeable.is_charging");
battery->priv->is_discharging =
- hal_manager_get_device_property_bool(battery->priv->manager, udi, "battery.rechargeable.is_discharging");
+ hal_device_get_property_bool(HAL_DEVICE(battery), "battery.rechargeable.is_discharging");
battery->priv->current_charge =
- hal_manager_get_device_property_int(battery->priv->manager, udi, "battery.charge_level.current");
+ hal_device_get_property_int(HAL_DEVICE(battery), "battery.charge_level.current");
battery->priv->last_full =
- hal_manager_get_device_property_int(battery->priv->manager, udi, "battery.charge_level.last_full");
+ hal_device_get_property_int(HAL_DEVICE(battery), "battery.charge_level.last_full");
- if ( hal_manager_device_has_key (battery->priv->manager, udi, "battery.remaining_time") )
+ if ( hal_device_has_key (HAL_DEVICE(battery), "battery.remaining_time") )
battery->priv->time =
- hal_manager_get_device_property_int(battery->priv->manager, udi, "battery.remaining_time");
+ hal_device_get_property_int(HAL_DEVICE(battery), "battery.remaining_time");
else
battery->priv->time = 0;
//FIXME: calculate the percentage if it is not found on HAL
- if ( hal_manager_device_has_key(battery->priv->manager, udi, "battery.charge_level.percentage") )
+ if ( hal_device_has_key(HAL_DEVICE(battery), "battery.charge_level.percentage") )
battery->priv->percentage =
- hal_manager_get_device_property_int(battery->priv->manager, udi, "battery.charge_level.percentage");
+ hal_device_get_property_int(HAL_DEVICE(battery), "battery.charge_level.percentage");
else battery->priv->percentage = 0;
- if ( hal_manager_device_has_key(battery->priv->manager, udi, "battery.reporting.last_full") )
+ if ( hal_device_has_key(HAL_DEVICE(battery), "battery.reporting.last_full") )
battery->priv->reporting_last_full =
- hal_manager_get_device_property_int(battery->priv->manager, udi, "battery.reporting.last_full");
+ hal_device_get_property_int(HAL_DEVICE(battery), "battery.reporting.last_full");
}
@@ -484,14 +480,9 @@
static void
hal_battery_get_battery_info (HalBattery *battery)
{
- gchar *udi = NULL;
- g_object_get (G_OBJECT(battery), "udi", &udi, NULL);
-
- g_return_if_fail (udi != NULL);
-
- if ( hal_manager_device_has_key (battery->priv->manager, udi, "battery.technology") )
+ if ( hal_device_has_key (HAL_DEVICE(battery), "battery.technology") )
{
- gchar *tech = hal_manager_get_device_property_string (battery->priv->manager, udi, "battery.technology");
+ gchar *tech = hal_device_get_property_string (HAL_DEVICE(battery), "battery.technology");
if ( tech )
{
battery->priv->technology = g_strdup (_translate_technology (tech));
@@ -499,9 +490,9 @@
}
}
- if ( hal_manager_device_has_key (battery->priv->manager, udi, "battery.vendor") )
+ if ( hal_device_has_key (HAL_DEVICE(battery), "battery.vendor") )
{
- gchar *vendor = hal_manager_get_device_property_string (battery->priv->manager, udi, "battery.vendor");
+ gchar *vendor = hal_device_get_property_string (HAL_DEVICE(battery), "battery.vendor");
if ( vendor )
{
battery->priv->vendor = g_strdup ( vendor);
@@ -509,9 +500,9 @@
}
}
- if ( hal_manager_device_has_key (battery->priv->manager, udi, "battery.model") )
+ if ( hal_device_has_key (HAL_DEVICE(battery), "battery.model") )
{
- gchar *model = hal_manager_get_device_property_string (battery->priv->manager, udi, "battery.model");
+ gchar *model = hal_device_get_property_string (HAL_DEVICE(battery), "battery.model");
if ( model )
{
battery->priv->model = g_strdup (model);
@@ -519,13 +510,12 @@
}
}
- battery->priv->reporting_design = hal_manager_get_device_property_int (battery->priv->manager,
- udi,
+ battery->priv->reporting_design = hal_device_get_property_int (HAL_DEVICE(battery),
"battery.reporting.design");
- if ( hal_manager_device_has_key (battery->priv->manager, udi, "battery.reporting.unit") )
+ if ( hal_device_has_key (HAL_DEVICE(battery), "battery.reporting.unit") )
{
- gchar *unit = hal_manager_get_device_property_string (battery->priv->manager, udi, "battery.reporting.unit");
+ gchar *unit = hal_device_get_property_string (HAL_DEVICE(battery), "battery.reporting.unit");
if ( unit )
{
@@ -568,14 +558,16 @@
{
HalBattery *battery = NULL;
- battery = g_object_new (HAL_TYPE_BATTERY, "udi", udi, NULL);
+ battery = g_object_new (HAL_TYPE_BATTERY, NULL);
+ hal_device_set_udi (HAL_DEVICE(battery), udi);
battery->priv->type = hal_battery_get_device_type (battery);
hal_battery_refresh_all (battery);
- hal_battery_get_battery_info (battery);
+ hal_battery_get_battery_info (battery);
hal_device_watch (HAL_DEVICE(battery));
+
g_signal_connect (G_OBJECT(battery), "device-changed",
G_CALLBACK(hal_battery_property_modified_cb), battery);
return battery;
Modified: xfce4-power-manager/trunk/libxfpm/hal-device.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-device.c 2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-device.c 2009-03-13 15:31:39 UTC (rev 6892)
@@ -36,16 +36,6 @@
static void hal_device_init (HalDevice *device);
static void hal_device_finalize (GObject *object);
-static void hal_device_set_property(GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-
-static void hal_device_get_property(GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
#define HAL_DEVICE_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o), HAL_TYPE_DEVICE, HalDevicePrivate))
@@ -60,12 +50,6 @@
enum
{
- PROP_0,
- PROP_UDI
-};
-
-enum
-{
DEVICE_CHANGED,
LAST_SIGNAL
};
@@ -75,12 +59,10 @@
G_DEFINE_TYPE(HalDevice, hal_device, G_TYPE_OBJECT)
static void
-hal_device_class_init(HalDeviceClass *klass)
+hal_device_class_init (HalDeviceClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS(klass);
- object_class->set_property = hal_device_set_property;
- object_class->get_property = hal_device_get_property;
signals[DEVICE_CHANGED] =
g_signal_new("device-changed",
@@ -93,57 +75,11 @@
G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
- g_object_class_install_property(object_class,
- PROP_UDI,
- g_param_spec_string("udi",
- NULL, NULL,
- NULL,
- G_PARAM_CONSTRUCT_ONLY |
- G_PARAM_WRITABLE |
- G_PARAM_READABLE));
object_class->finalize = hal_device_finalize;
- g_type_class_add_private(klass,sizeof(HalDevicePrivate));
+ g_type_class_add_private (klass, sizeof(HalDevicePrivate));
}
-static void hal_device_set_property(GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- HalDevice *device = (HalDevice *) object;
-
- switch (prop_id )
- {
- case PROP_UDI:
- device->priv->udi = g_strdup(g_value_get_string (value) );
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-
-}
-
-static void hal_device_get_property(GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- HalDevice *device = (HalDevice *) object;
-
- switch (prop_id )
- {
- case PROP_UDI:
- g_value_set_string (value, device->priv->udi);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-
-}
-
static void
hal_device_property_modified_cb (DBusGProxy *proxy,
gint type,
@@ -176,10 +112,6 @@
hal_device_add_watch (HalDevice *device)
{
GType array_gtype, gtype;
- device->priv->proxy = dbus_g_proxy_new_for_name (device->priv->bus,
- "org.freedesktop.Hal",
- device->priv->udi,
- "org.freedesktop.Hal.Device");
g_return_if_fail ( DBUS_IS_G_PROXY (device->priv->proxy) );
@@ -209,15 +141,24 @@
}
static void
-hal_device_init(HalDevice *device)
+hal_device_init (HalDevice *device)
{
device->priv = HAL_DEVICE_GET_PRIVATE(device);
- device->priv->bus = NULL;
device->priv->proxy = NULL;
device->priv->udi = NULL;
device->priv->watch_added = FALSE;
+ GError *error = NULL;
+
+ device->priv->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+
+ if ( error )
+ {
+ g_critical ("Unable to get bus system: %s\n", error->message);
+ g_error_free (error);
+ }
+
}
static void
@@ -244,30 +185,161 @@
}
HalDevice *
-hal_device_new (const gchar *udi)
+hal_device_new (void)
{
HalDevice *device = NULL;
- device = g_object_new (HAL_TYPE_DEVICE, "udi", udi, NULL);
+ device = g_object_new (HAL_TYPE_DEVICE, NULL);
+
return device;
}
+void hal_device_set_udi (HalDevice *device, const gchar *udi)
+{
+ g_return_if_fail (HAL_IS_DEVICE (device));
+
+ if ( device->priv->udi )
+ {
+ g_free (device->priv->udi);
+ device->priv->udi = NULL;
+ g_object_unref (device->priv->proxy);
+ }
+
+ device->priv->udi = g_strdup (udi);
+
+ device->priv->proxy = dbus_g_proxy_new_for_name (device->priv->bus,
+ "org.freedesktop.Hal",
+ device->priv->udi,
+ "org.freedesktop.Hal.Device");
+}
+
+const gchar *hal_device_get_udi (HalDevice *device)
+{
+ g_return_val_if_fail (HAL_IS_DEVICE(device), NULL);
+
+ return device->priv->udi;
+}
+
gboolean
hal_device_watch (HalDevice *device)
{
+ g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), FALSE);
+ hal_device_add_watch(device);
+
+ return device->priv->watch_added;
+}
+
+gboolean hal_device_get_property_bool (HalDevice *device, const gchar *property)
+{
+ g_return_val_if_fail (HAL_IS_DEVICE(device), FALSE);
+ g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), FALSE);
+
+ gboolean value = FALSE;
GError *error = NULL;
+
+ dbus_g_proxy_call (device->priv->proxy, "GetPropertyBoolean", &error,
+ G_TYPE_STRING, property,
+ G_TYPE_INVALID,
+ G_TYPE_BOOLEAN, &value,
+ G_TYPE_INVALID);
+
+ if ( error )
+ {
+ g_critical ("Error getting bool property on device %s: %s\n", device->priv->udi, error->message);
+ g_error_free (error);
+ }
+
+ return value;
+}
+
+gint hal_device_get_property_int (HalDevice *device, const gchar *property)
+{
+ g_return_val_if_fail (HAL_IS_DEVICE(device), 0);
+ g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), 0);
+
+ gint value = 0;
+ GError *error = NULL;
+
+ dbus_g_proxy_call (device->priv->proxy, "GetPropertyInteger", &error,
+ G_TYPE_STRING, property,
+ G_TYPE_INVALID,
+ G_TYPE_INT, &value,
+ G_TYPE_INVALID);
+
+ if ( error )
+ {
+ g_critical ("Error getting integer property on device %s: %s\n", device->priv->udi, error->message);
+ g_error_free (error);
+ }
+
+ return value;
+}
+
+gchar *hal_device_get_property_string (HalDevice *device, const gchar *property)
+{
+ g_return_val_if_fail (HAL_IS_DEVICE(device), NULL);
+ g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), NULL);
+
+ gchar *value = NULL;
+ GError *error = NULL;
+
+ dbus_g_proxy_call (device->priv->proxy, "GetPropertyString", &error,
+ G_TYPE_STRING, property,
+ G_TYPE_INVALID,
+ G_TYPE_STRING, &value,
+ G_TYPE_INVALID);
+
+ if ( error )
+ {
+ g_critical ("Error getting string property on device %s: %s\n", device->priv->udi, error->message);
+ g_error_free (error);
+ }
+
+ return value;
+}
- device->priv->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+gboolean hal_device_has_key (HalDevice *device, const gchar *key)
+{
+ g_return_val_if_fail (HAL_IS_DEVICE(device), FALSE);
+ g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), FALSE);
+ gboolean value = FALSE;
+ GError *error = NULL;
+
+ dbus_g_proxy_call (device->priv->proxy, "PropertyExists", &error,
+ G_TYPE_STRING, key,
+ G_TYPE_INVALID,
+ G_TYPE_BOOLEAN, &value,
+ G_TYPE_INVALID);
+
if ( error )
{
- g_critical ("Unable to get bus system: %s\n", error->message);
+ g_critical ("Error getting property exists on device %s: %s\n", device->priv->udi, error->message);
g_error_free (error);
- goto out;
}
+
+ return value;
+}
- hal_device_add_watch(device);
-
-out:
- return device->priv->watch_added;
- ;
+
+gboolean hal_device_has_capability (HalDevice *device, const gchar *capability)
+{
+ g_return_val_if_fail (HAL_IS_DEVICE(device), FALSE);
+ g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), FALSE);
+
+ gboolean value = FALSE;
+ GError *error = NULL;
+
+ dbus_g_proxy_call (device->priv->proxy, "QueryCapability", &error,
+ G_TYPE_STRING, capability,
+ G_TYPE_INVALID,
+ G_TYPE_BOOLEAN, &value,
+ G_TYPE_INVALID);
+
+ if ( error )
+ {
+ g_critical ("Error getting querying capability on device %s: %s\n", device->priv->udi, error->message);
+ g_error_free (error);
+ }
+
+ return value;
}
Modified: xfce4-power-manager/trunk/libxfpm/hal-device.h
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-device.h 2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-device.h 2009-03-13 15:31:39 UTC (rev 6892)
@@ -40,20 +40,42 @@
typedef struct
{
- GObjectClass parent_class;
+ GObjectClass parent_class;
- void (*device_changed) (HalDevice *device,
- const gchar *udi,
- const gchar *key,
- gboolean is_added,
- gboolean is_removed);
+ void (*device_changed) (HalDevice *device,
+ const gchar *udi,
+ const gchar *key,
+ gboolean is_added,
+ gboolean is_removed);
} HalDeviceClass;
-GType hal_device_get_type (void) G_GNUC_CONST;
-HalDevice *hal_device_new (const gchar *udi);
-gboolean hal_device_watch (HalDevice *device);
+GType hal_device_get_type (void) G_GNUC_CONST;
+HalDevice *hal_device_new (void);
+
+void hal_device_set_udi (HalDevice *device,
+ const gchar *udi);
+
+const gchar *hal_device_get_udi (HalDevice *device);
+
+gboolean hal_device_watch (HalDevice *device);
+
+gboolean hal_device_get_property_bool (HalDevice *device,
+ const gchar *property);
+
+gint hal_device_get_property_int (HalDevice *device,
+ const gchar *property);
+
+gchar *hal_device_get_property_string (HalDevice *device,
+ const gchar *property);
+
+gboolean hal_device_has_key (HalDevice *device,
+ const gchar *key);
+
+gboolean hal_device_has_capability (HalDevice *device,
+ const gchar *capability);
+
G_END_DECLS
#endif /* __HAL_DEVICE_H */
Modified: xfce4-power-manager/trunk/libxfpm/hal-manager.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-manager.c 2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-manager.c 2009-03-13 15:31:39 UTC (rev 6892)
@@ -197,189 +197,7 @@
return udi;
}
-
-gboolean hal_manager_get_device_property_bool (HalManager *manager, const gchar *udi, const gchar *property)
-{
- g_return_val_if_fail (HAL_IS_MANAGER(manager), FALSE);
- g_return_val_if_fail (manager->priv->connected, FALSE);
-
- gboolean value = FALSE;
- GError *error = NULL;
- DBusGProxy *proxy = dbus_g_proxy_new_for_name (manager->priv->bus,
- "org.freedesktop.Hal",
- udi,
- "org.freedesktop.Hal.Device");
-
- if ( !proxy )
- {
- g_critical ("Unable to get proxy on interface %s\n", udi);
- return value;
- }
-
- dbus_g_proxy_call (proxy, "GetPropertyBoolean", &error,
- G_TYPE_STRING, property,
- G_TYPE_INVALID,
- G_TYPE_BOOLEAN, &value,
- G_TYPE_INVALID);
-
- g_object_unref (proxy);
-
- if ( error )
- {
- g_critical ("Error getting bool property on device %s: %s\n", udi, error->message);
- g_error_free (error);
- }
-
- return value;
-}
-
-gint hal_manager_get_device_property_int (HalManager *manager, const gchar *udi, const gchar *property)
-{
- g_return_val_if_fail (HAL_IS_MANAGER(manager), 0);
- g_return_val_if_fail (manager->priv->connected, 0);
-
- gint value = 0;
- GError *error = NULL;
- DBusGProxy *proxy = dbus_g_proxy_new_for_name (manager->priv->bus,
- "org.freedesktop.Hal",
- udi,
- "org.freedesktop.Hal.Device");
-
- if ( !proxy )
- {
- g_critical ("Unable to get proxy on interface %s\n", udi);
- return value;
- }
-
- dbus_g_proxy_call (proxy, "GetPropertyInteger", &error,
- G_TYPE_STRING, property,
- G_TYPE_INVALID,
- G_TYPE_INT, &value,
- G_TYPE_INVALID);
-
- g_object_unref (proxy);
-
- if ( error )
- {
- g_critical ("Error getting integer property on device %s: %s\n", udi, error->message);
- g_error_free (error);
- }
-
- return value;
-
- return 0;
-}
-
-gchar *hal_manager_get_device_property_string (HalManager *manager, const gchar *udi, const gchar *property)
-{
- g_return_val_if_fail (HAL_IS_MANAGER(manager), NULL);
- g_return_val_if_fail (manager->priv->connected, NULL);
-
- gchar *value = NULL;
- GError *error = NULL;
- DBusGProxy *proxy = dbus_g_proxy_new_for_name (manager->priv->bus,
- "org.freedesktop.Hal",
- udi,
- "org.freedesktop.Hal.Device");
-
- if ( !proxy )
- {
- g_critical ("Unable to get proxy on interface %s\n", udi);
- return value;
- }
-
- dbus_g_proxy_call (proxy, "GetPropertyString", &error,
- G_TYPE_STRING, property,
- G_TYPE_INVALID,
- G_TYPE_STRING, &value,
- G_TYPE_INVALID);
-
- g_object_unref (proxy);
-
- if ( error )
- {
- g_critical ("Error getting string property on device %s: %s\n", udi, error->message);
- g_error_free (error);
- }
-
- return value;
-
- return NULL;
-}
-gboolean hal_manager_device_has_key (HalManager *manager, const gchar *udi, const gchar *key)
-{
- g_return_val_if_fail (HAL_IS_MANAGER(manager), FALSE);
- g_return_val_if_fail (manager->priv->connected, FALSE);
-
- gboolean value = FALSE;
- GError *error = NULL;
- DBusGProxy *proxy = dbus_g_proxy_new_for_name (manager->priv->bus,
- "org.freedesktop.Hal",
- udi,
- "org.freedesktop.Hal.Device");
-
- if ( !proxy )
- {
- g_critical ("Unable to get proxy on interface %s\n", udi);
- return value;
- }
-
- dbus_g_proxy_call (proxy, "PropertyExists", &error,
- G_TYPE_STRING, key,
- G_TYPE_INVALID,
- G_TYPE_BOOLEAN, &value,
- G_TYPE_INVALID);
-
- g_object_unref (proxy);
-
- if ( error )
- {
- g_critical ("Error getting property exists on device %s: %s\n", udi, error->message);
- g_error_free (error);
- }
-
- return value;
-
- return value;
-}
-
-gboolean hal_manager_device_has_capability (HalManager *manager, const gchar *udi, const gchar *capability)
-{
- g_return_val_if_fail (HAL_IS_MANAGER(manager), FALSE);
- g_return_val_if_fail (manager->priv->connected, FALSE);
-
- gboolean value = FALSE;
- GError *error = NULL;
-
- DBusGProxy *proxy = dbus_g_proxy_new_for_name (manager->priv->bus,
- "org.freedesktop.Hal",
- udi,
- "org.freedesktop.Hal.Device");
-
- if ( !proxy )
- {
- g_critical ("Unable to get proxy on interface %s\n", udi);
- return value;
- }
-
- dbus_g_proxy_call (proxy, "QueryCapability", &error,
- G_TYPE_STRING, capability,
- G_TYPE_INVALID,
- G_TYPE_BOOLEAN, &value,
- G_TYPE_INVALID);
-
- g_object_unref (proxy);
-
- if ( error )
- {
- g_critical ("Error getting querying capability on device %s: %s\n", udi, error->message);
- g_error_free (error);
- }
-
- return value;
-}
-
void hal_manager_free_string_array (gchar **array)
{
gint i;
Modified: xfce4-power-manager/trunk/libxfpm/hal-manager.h
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-manager.h 2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-manager.h 2009-03-13 15:31:39 UTC (rev 6892)
@@ -54,27 +54,7 @@
gchar **hal_manager_find_device_by_capability (HalManager *manager,
const gchar *capability);
-
-gboolean hal_manager_get_device_property_bool (HalManager *manager,
- const gchar *udi,
- const gchar *property);
-
-gint hal_manager_get_device_property_int (HalManager *manager,
- const gchar *udi,
- const gchar *property);
-
-gchar *hal_manager_get_device_property_string (HalManager *manager,
- const gchar *udi,
- const gchar *property);
-
-gboolean hal_manager_device_has_key (HalManager *manager,
- const gchar *udi,
- const gchar *key);
-
-gboolean hal_manager_device_has_capability (HalManager *manager,
- const gchar *udi,
- const gchar *capability);
-
+
void hal_manager_free_string_array (gchar **array);
G_END_DECLS
Modified: xfce4-power-manager/trunk/libxfpm/hal-power.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-power.c 2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-power.c 2009-03-13 15:31:39 UTC (rev 6892)
@@ -66,13 +66,13 @@
* Sanity check of the keys present of a battery device
*/
static gboolean
-hal_power_check_battery (HalPower *power, const gchar *udi)
+hal_power_check_battery (HalPower *power, HalDevice *device)
{
- if ( hal_manager_device_has_key(power->priv->manager, udi, "battery.present") &&
- hal_manager_device_has_key(power->priv->manager, udi, "battery.rechargeable.is_charging") &&
- hal_manager_device_has_key(power->priv->manager, udi, "battery.rechargeable.is_discharging") &&
- hal_manager_device_has_key(power->priv->manager, udi, "battery.charge_level.current") &&
- hal_manager_device_has_key(power->priv->manager, udi, "battery.charge_level.last_full") )
+ if ( hal_device_has_key(device, "battery.present") &&
+ hal_device_has_key(device, "battery.rechargeable.is_charging") &&
+ hal_device_has_key(device, "battery.rechargeable.is_discharging") &&
+ hal_device_has_key(device, "battery.charge_level.current") &&
+ hal_device_has_key(device, "battery.charge_level.last_full") )
return TRUE;
return FALSE;
@@ -121,19 +121,24 @@
static void
hal_power_device_added_cb (HalManager *manager, const gchar *udi, HalPower *power)
{
- if ( hal_manager_device_has_capability (manager, udi, "battery") )
+ HalDevice *device = hal_device_new ();
+ hal_device_set_udi (device, udi);
+
+ if ( hal_device_has_capability (device, "battery") )
{
HalBattery *battery = hal_power_add_battery (power, udi);
g_signal_emit (G_OBJECT(power), signals[BATTERY_ADDED], 0, battery);
}
- else if ( hal_manager_device_has_capability (manager, udi, "ac_adapter") )
+ else if ( hal_device_has_capability (device, "ac_adapter") )
{
if ( !power->priv->adapter_found )
{
- power->priv->adapter = hal_device_new (udi);
+ power->priv->adapter = hal_device_new ();
+ hal_device_set_udi (power->priv->adapter, udi);
g_signal_emit (G_OBJECT(power), signals[ADAPTER_ADDED], 0, power->priv->adapter);
}
}
+ g_object_unref (device);
}
static void
@@ -208,6 +213,7 @@
static void
hal_power_get_batteries_internal (HalPower *power)
{
+ HalDevice *device = hal_device_new ();
gchar **batteries = NULL;
gint i;
@@ -218,7 +224,9 @@
for ( i = 0; batteries[i]; i++ )
{
- if (!hal_power_check_battery(power, batteries[i]))
+ hal_device_set_udi (device, batteries[i]);
+
+ if (!hal_power_check_battery(power, device))
continue;
hal_power_add_battery (power, batteries[i]);
@@ -227,7 +235,8 @@
hal_manager_free_string_array (batteries);
out:
- ;
+
+ g_object_unref (device);
}
@@ -242,7 +251,9 @@
if ( !adapter )
goto out;
- power->priv->adapter = hal_device_new (adapter[0]);
+ power->priv->adapter = hal_device_new ();
+ hal_device_set_udi (power->priv->adapter, adapter[0]);
+ hal_device_watch (power->priv->adapter);
power->priv->adapter_found = TRUE;
hal_manager_free_string_array (adapter);
Modified: xfce4-power-manager/trunk/src/xfpm-adapter.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-adapter.c 2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/src/xfpm-adapter.c 2009-03-13 15:31:39 UTC (rev 6892)
@@ -57,6 +57,7 @@
{
XfpmTrayIcon *icon;
HalDevice *device;
+ gboolean present;
};
enum
@@ -118,16 +119,27 @@
}
static void
-xfpm_adapter_device_changed_cb (HalDevice *device, XfpmAdapter *adapter)
+xfpm_adapter_changed (XfpmAdapter *adapter)
{
- gboolean is_present =
- xfpm_adapter_get_presence (adapter);
-
- TRACE("Adapter changed is_present =%s", xfpm_bool_to_string(is_present));
-
- g_signal_emit (G_OBJECT(adapter), signals[ADAPTER_CHANGED], 0, is_present);
+ adapter->priv->present = hal_device_get_property_bool (adapter->priv->device, "ac_adapter.present");
+ TRACE("Adapter changed is_present =%s", xfpm_bool_to_string(adapter->priv->present));
+ g_signal_emit (G_OBJECT(adapter), signals[ADAPTER_CHANGED], 0, adapter->priv->present);
}
+static void
+xfpm_adapter_device_changed_cb (HalDevice *device,
+ const gchar *udi,
+ const gchar *key,
+ gboolean is_removed,
+ gboolean is_added,
+ XfpmAdapter *adapter)
+{
+ if ( xfpm_strequal (key, "ac_adapter.present") )
+ {
+ xfpm_adapter_changed (adapter);
+ }
+}
+
XfpmAdapter *
xfpm_adapter_new (const HalDevice *device)
{
@@ -140,16 +152,11 @@
G_CALLBACK (xfpm_adapter_device_changed_cb),
adapter);
+ xfpm_adapter_changed (adapter);
+
return adapter;
}
-gboolean xfpm_adapter_get_presence (XfpmAdapter *adapter)
-{
- gboolean is_present;
- g_object_get (G_OBJECT(adapter->priv->device), "is-present", &is_present, NULL);
- return is_present;
-}
-
void xfpm_adapter_set_visible (XfpmAdapter *adapter, gboolean visible)
{
g_return_if_fail ( XFPM_IS_ADAPTER (adapter));
Modified: xfce4-power-manager/trunk/src/xfpm-lid-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-lid-hal.c 2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/src/xfpm-lid-hal.c 2009-03-13 15:31:39 UTC (rev 6892)
@@ -116,6 +116,7 @@
G_OBJECT_CLASS(xfpm_lid_hal_parent_class)->finalize(object);
}
+
static void
xfpm_lid_hal_device_changed_cb(HalDevice *device,
const gchar *udi,
@@ -129,7 +130,7 @@
TRACE("Property modified key=%s key=%s\n", key, udi);
- gboolean pressed = hal_manager_get_device_property_bool (lid->priv->manager, udi, key);
+ gboolean pressed = hal_device_get_property_bool (lid->priv->device, key);
if ( pressed )
{
@@ -139,13 +140,16 @@
}
+//FIXME: Review
static gboolean
xfpm_lid_hal_setup (XfpmLidHal *lid)
{
+ HalDevice *device;
+ gchar **udi = NULL;
+
lid->priv->manager = hal_manager_new ();
+ device = hal_device_new ();
- gchar **udi = NULL;
-
udi = hal_manager_find_device_by_capability (lid->priv->manager, "button");
if ( !udi )
@@ -155,19 +159,24 @@
for ( i = 0; udi[i]; i++ )
{
- if ( hal_manager_device_has_key (lid->priv->manager, udi[i], "button.type" ) &&
- hal_manager_device_has_key (lid->priv->manager, udi[i], "button.has_state" ) )
+ hal_device_set_udi (device, udi[i]);
+ if ( hal_device_has_key (device, "button.type" ) &&
+ hal_device_has_key (device, "button.has_state" ) )
{
+
gchar *button_type =
- hal_manager_get_device_property_string (lid->priv->manager, udi[i], "button.type");
+ hal_device_get_property_string (device, "button.type");
if ( !button_type )
+ {
continue;
+ }
if ( xfpm_strequal (button_type, "lid") )
{
lid->priv->hw_found = TRUE;
- lid->priv->device = hal_device_new (udi[i]);
+
+ lid->priv->device = device;
g_signal_connect (lid->priv->device, "device-changed",
G_CALLBACK(xfpm_lid_hal_device_changed_cb), lid);
if ( !hal_device_watch (lid->priv->device) )
@@ -179,8 +188,12 @@
}
}
}
+
+ if ( !lid->priv->hw_found )
+ g_object_unref (device);
hal_manager_free_string_array (udi);
+
return TRUE;
}
Modified: xfce4-power-manager/trunk/src/xfpm-supply.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-supply.c 2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/src/xfpm-supply.c 2009-03-13 15:31:39 UTC (rev 6892)
@@ -565,7 +565,9 @@
g_critical ("Callback from the adapter object but no adapter found in the system\n");
supply->priv->adapter_present = present;
+
xfpm_supply_set_adapter_presence (supply);
+
g_signal_emit (G_OBJECT(supply), signals[ON_BATTERY], 0, !supply->priv->adapter_present);
}
@@ -581,14 +583,18 @@
static void
xfpm_supply_add_battery (XfpmSupply *supply, const HalBattery *device)
{
- gchar *udi = NULL;
+ const gchar *udi;
- g_object_get(G_OBJECT(device), "udi", &udi, NULL);
+ udi = hal_device_get_udi (HAL_DEVICE(device));
TRACE("New battery found %s", udi);
XfpmBattery *battery = xfpm_battery_new (device);
+
xfpm_battery_set_show_icon (battery, supply->priv->show_icon);
+
+ g_print("Adapter %d\n", supply->priv->adapter_present );
+
xfpm_battery_set_adapter_presence (battery, supply->priv->adapter_present);
xfpm_battery_set_critical_level (battery, supply->priv->critical_level);
g_hash_table_insert (supply->priv->hash, g_strdup(udi), battery);
@@ -599,15 +605,12 @@
g_signal_connect (G_OBJECT(battery), "popup-battery-menu",
G_CALLBACK(xfpm_supply_popup_battery_menu_cb), supply);
- if (udi)
- g_free (udi);
}
static void
xfpm_supply_remove_battery (XfpmSupply *supply, const HalBattery *device)
{
- gchar *udi;
- g_object_get(G_OBJECT(device), "udi", &udi, NULL);
+ const gchar *udi = hal_device_get_udi (HAL_DEVICE(device));
XfpmBattery *battery = xfpm_supply_get_battery(supply, udi);
@@ -619,8 +622,6 @@
g_critical ("Unable to removed battery object from hash\n");
}
- if (udi)
- g_free (udi);
}
static void
@@ -686,7 +687,7 @@
static void
xfpm_supply_add_adapter (XfpmSupply *supply, const HalDevice *device)
{
- supply->priv->adapter_found = TRUE;
+ supply->priv->adapter_present = TRUE;
supply->priv->adapter = xfpm_adapter_new (device);
g_signal_connect (supply->priv->adapter, "adapter-changed",
@@ -704,10 +705,9 @@
if ( device )
{
#ifdef DEBUG
- gchar *udi;
- g_object_get (G_OBJECT(device), "udi", &udi, NULL);
+ const gchar *udi;
+ udi = hal_device_get_udi (HAL_DEVICE(device));
TRACE ("Adapter found in the system with udi=%s\n", udi);
- g_free (udi);
#endif
xfpm_supply_add_adapter (supply, device);
}
More information about the Goodies-commits
mailing list