debian/patches: Add 0003_fix-power-statistics-when-unplugging-wireless-device-with-battery.patch. Fix crashes of mate-power-statistics when unplugging wireless devices that have a batter (e.g. wireless mouse). The crashes are due to a not fully implemented adaptation to API changes in upower 0.99 API. (Closes: #780844).
This commit is contained in:
parent
a11229485b
commit
336e1c5bfe
193
debian/patches/0003_fix-power-statistics-when-unplugging-wireless-device-with-battery.patch
vendored
Normal file
193
debian/patches/0003_fix-power-statistics-when-unplugging-wireless-device-with-battery.patch
vendored
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
From 125bdfed22d23f6239b266426acf8fb8508691b8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Monsta <monsta@inbox.ru>
|
||||||
|
Date: Tue, 10 Mar 2015 14:38:07 +0300
|
||||||
|
Subject: [PATCH] statistics: adjustment for API breakage in upower 0.99
|
||||||
|
|
||||||
|
---
|
||||||
|
src/gpm-statistics.c | 99 +++++++++++++++++++++++++++++++++++++---------------
|
||||||
|
1 file 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);
|
||||||
|
|
1
debian/patches/series
vendored
1
debian/patches/series
vendored
@ -1,4 +1,5 @@
|
|||||||
0001_fix-backlight-popup-gtkbuilder.patch
|
0001_fix-backlight-popup-gtkbuilder.patch
|
||||||
0002_handle-UP-DEVICE-STATE-UNKNOWN.patch
|
0002_handle-UP-DEVICE-STATE-UNKNOWN.patch
|
||||||
|
0003_fix-power-statistics-when-unplugging-wireless-device-with-battery.patch
|
||||||
2001_omit-gfdl-licensed-help-files.patch
|
2001_omit-gfdl-licensed-help-files.patch
|
||||||
2002_compile-extra-man-pages.patch
|
2002_compile-extra-man-pages.patch
|
||||||
|
Loading…
Reference in New Issue
Block a user