aboutsummaryrefslogtreecommitdiff
path: root/src/indicator-power.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/indicator-power.c')
-rw-r--r--src/indicator-power.c67
1 files changed, 36 insertions, 31 deletions
diff --git a/src/indicator-power.c b/src/indicator-power.c
index 48d85a6..bbc653b 100644
--- a/src/indicator-power.c
+++ b/src/indicator-power.c
@@ -473,17 +473,13 @@ get_primary_device (GVariant *devices)
}
static void
-get_devices_cb (GObject *source_object,
- GAsyncResult *res,
- gpointer user_data)
+put_primary_device (IndicatorPower *self,
+ GVariant *device)
{
- IndicatorPower *self = INDICATOR_POWER (user_data);
IndicatorPowerPrivate *priv = self->priv;
UpDeviceKind kind;
UpDeviceState state;
GIcon *device_gicons;
- GVariant *devices_container;
- GError *error = NULL;
gchar *short_details = NULL;
gchar *details = NULL;
gchar *device_icon = NULL;
@@ -491,29 +487,9 @@ get_devices_cb (GObject *source_object,
gdouble percentage;
guint64 time;
const gchar *device_name;
- gchar *short_timestring = NULL;
- gchar *detailed_timestring = NULL;
-
- devices_container = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), res, &error);
- if (devices_container == NULL)
- {
- g_printerr ("Error getting devices: %s\n", error->message);
- g_error_free (error);
-
- return;
- }
- priv->devices = g_variant_get_child_value (devices_container, 0);
-
- priv->device = get_primary_device (priv->devices);
- if (priv->device == NULL)
- {
- g_printerr ("Error getting primary device");
-
- return;
- }
/* set the icon and text */
- g_variant_get (priv->device,
+ g_variant_get (device,
"(susdut)",
&object_path,
&kind,
@@ -542,17 +518,46 @@ get_devices_cb (GObject *source_object,
short_details);
set_accessible_desc (self, details);
- build_menu (self);
-
g_free (short_details);
g_free (details);
g_free (device_icon);
- g_free (short_timestring);
- g_free (detailed_timestring);
g_free (object_path);
}
static void
+get_devices_cb (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ IndicatorPower *self = INDICATOR_POWER (user_data);
+ IndicatorPowerPrivate *priv = self->priv;
+ GVariant *devices_container;
+ GError *error = NULL;
+
+ devices_container = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), res, &error);
+ if (devices_container == NULL)
+ {
+ g_printerr ("Error getting devices: %s\n", error->message);
+ g_error_free (error);
+
+ return;
+ }
+ priv->devices = g_variant_get_child_value (devices_container, 0);
+
+ priv->device = get_primary_device (priv->devices);
+ if (priv->device == NULL)
+ {
+ g_printerr ("Error getting primary device");
+
+ return;
+ }
+
+ put_primary_device (self, priv->device);
+
+ build_menu (self);
+}
+
+static void
receive_signal (GDBusProxy *proxy,
gchar *sender_name,
gchar *signal_name,