summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gpm-statistics.c99
1 files changed, 71 insertions, 28 deletions
diff --git a/src/gpm-statistics.c b/src/gpm-statistics.c
index 13489dc..ecb71a7 100644
--- a/src/gpm-statistics.c
+++ b/src/gpm-statistics.c
@@ -1183,10 +1183,33 @@ gpm_stats_window_activated_cb (EggUnique *egg_unique, gpointer data)
}
/**
+ * gpm_stats_device_changed_cb:
+ **/
+static void
+#if UP_CHECK_VERSION(0, 99, 0)
+gpm_stats_device_changed_cb (UpDevice *device, GParamSpec *pspec, gpointer user_data)
+#else
+gpm_stats_device_changed_cb (UpClient *client, UpDevice *device, gpointer user_data)
+#endif
+{
+ const gchar *object_path;
+ object_path = up_device_get_object_path (device);
+ if (object_path == NULL || current_device == NULL)
+ return;
+ egg_debug ("changed: %s", object_path);
+ if (g_strcmp0 (current_device, object_path) == 0)
+ gpm_stats_update_info_data (device);
+}
+
+/**
* gpm_stats_add_device:
**/
static void
+#if UP_CHECK_VERSION(0, 99, 0)
+gpm_stats_add_device (UpDevice *device, GPtrArray *devices)
+#else
gpm_stats_add_device (UpDevice *device)
+#endif
{
const gchar *id;
GtkTreeIter iter;
@@ -1194,6 +1217,14 @@ gpm_stats_add_device (UpDevice *device)
const gchar *icon;
UpDeviceKind kind;
+#if UP_CHECK_VERSION(0, 99, 0)
+ if (devices != NULL)
+ g_ptr_array_add (devices, device);
+
+ g_signal_connect (device, "notify",
+ G_CALLBACK (gpm_stats_device_changed_cb), NULL);
+#endif
+
/* get device properties */
g_object_get (device,
"kind", &kind,
@@ -1224,48 +1255,51 @@ gpm_stats_data_changed_cb (UpClient *client, gpointer user_data)
* gpm_stats_device_added_cb:
**/
static void
+#if UP_CHECK_VERSION(0, 99, 0)
+gpm_stats_device_added_cb (UpClient *client, UpDevice *device, GPtrArray *devices)
+#else
gpm_stats_device_added_cb (UpClient *client, UpDevice *device, gpointer user_data)
+#endif
{
const gchar *object_path;
object_path = up_device_get_object_path (device);
egg_debug ("added: %s", object_path);
- gpm_stats_add_device (device);
-}
-/**
- * gpm_stats_device_changed_cb:
- **/
-static void
#if UP_CHECK_VERSION(0, 99, 0)
-gpm_stats_device_changed_cb (UpClient *client, GParamSpec *pspec, gpointer user_data)
-{
- gpm_stats_button_update_ui();
-}
+ gpm_stats_add_device (device, devices);
#else
-gpm_stats_device_changed_cb (UpClient *client, UpDevice *device, gpointer user_data)
-{
- const gchar *object_path;
- object_path = up_device_get_object_path (device);
- if (object_path == NULL || current_device == NULL)
- return;
- egg_debug ("changed: %s", object_path);
- if (g_strcmp0 (current_device, object_path) == 0)
- gpm_stats_update_info_data (device);
-}
+ gpm_stats_add_device (device);
#endif
+}
/**
* gpm_stats_device_removed_cb:
**/
static void
+#if UP_CHECK_VERSION(0, 99, 0)
+gpm_stats_device_removed_cb (UpClient *client, const gchar *object_path, GPtrArray *devices)
+#else
gpm_stats_device_removed_cb (UpClient *client, UpDevice *device, gpointer user_data)
+#endif
{
- const gchar *object_path;
GtkTreeIter iter;
gchar *id = NULL;
gboolean ret;
- object_path = up_device_get_object_path (device);
+#if UP_CHECK_VERSION(0, 99, 0)
+ UpDevice *device_tmp;
+ guint i;
+
+ for (i = 0; i < devices->len; i++) {
+ device_tmp = g_ptr_array_index (devices, i);
+ if (g_strcmp0 (up_device_get_object_path (device_tmp), object_path) == 0) {
+ g_ptr_array_remove_index_fast (devices, i);
+ break;
+ }
+ }
+#else
+ const gchar *object_path = up_device_get_object_path (device);
+#endif
egg_debug ("removed: %s", object_path);
if (g_strcmp0 (current_device, object_path) == 0) {
gtk_list_store_clear (list_store_info);
@@ -1545,7 +1579,7 @@ main (int argc, char *argv[])
EggUnique *egg_unique;
gboolean ret;
UpClient *client;
- GPtrArray *devices;
+ GPtrArray *devices = NULL;
UpDevice *device;
UpDeviceKind kind;
guint i, j;
@@ -1815,16 +1849,24 @@ main (int argc, char *argv[])
device = g_ptr_array_index (devices, i);
g_object_get (device, "kind", &kind, NULL);
if (kind == j)
+#if UP_CHECK_VERSION(0, 99, 0)
+ /* NULL == do not add it to ptr array */
+ gpm_stats_add_device (device, NULL);
+#else
gpm_stats_add_device (device);
+#endif
}
}
/* connect now the coldplug is done */
- g_signal_connect (client, "device-added", G_CALLBACK (gpm_stats_device_added_cb), NULL);
- g_signal_connect (client, "device-removed", G_CALLBACK (gpm_stats_device_removed_cb), NULL);
#if UP_CHECK_VERSION(0, 99, 0)
- g_signal_connect (client, "notify", G_CALLBACK (gpm_stats_device_changed_cb), NULL);
+ g_signal_connect (client, "device-added", G_CALLBACK (gpm_stats_device_added_cb), devices);
+ g_signal_connect (client, "device-removed", G_CALLBACK (gpm_stats_device_removed_cb), devices);
#else
+ g_signal_connect (client, "device-added", G_CALLBACK (gpm_stats_device_added_cb), NULL);
+ g_signal_connect (client, "device-removed", G_CALLBACK (gpm_stats_device_removed_cb), NULL);
+#endif
+#if !UP_CHECK_VERSION(0, 99, 0)
g_signal_connect (client, "device-changed", G_CALLBACK (gpm_stats_device_changed_cb), NULL);
#endif
@@ -1854,8 +1896,6 @@ main (int argc, char *argv[])
if (last_device != NULL)
gpm_stats_highlight_device (last_device);
- g_ptr_array_unref (devices);
-
/* set axis */
widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_history_type"));
gpm_stats_history_type_combo_changed_cb (widget, NULL);
@@ -1869,6 +1909,9 @@ main (int argc, char *argv[])
#if !UP_CHECK_VERSION(0, 99, 0)
out:
#endif
+ if (devices != NULL)
+ g_ptr_array_unref (devices);
+
g_object_unref (settings);
g_object_unref (client);
g_object_unref (wakeups);