[mate-power-manager] 01/02: 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).

Mike Gabriel sunweaver at debian.org
Fri Apr 3 14:15:30 UTC 2015


This is an automated email from the git hooks/post-receive script.

sunweaver pushed a commit to branch master
in repository mate-power-manager.

commit 336e1c5bfec1a9814fb036fa5637ce20e3e66443
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Fri Apr 3 16:01:32 2015 +0200

    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).
---
 ...n-unplugging-wireless-device-with-battery.patch | 193 +++++++++++++++++++++
 debian/patches/series                              |   1 +
 2 files changed, 194 insertions(+)

diff --git a/debian/patches/0003_fix-power-statistics-when-unplugging-wireless-device-with-battery.patch b/debian/patches/0003_fix-power-statistics-when-unplugging-wireless-device-with-battery.patch
new file mode 100644
index 0000000..8a6ff61
--- /dev/null
+++ b/debian/patches/0003_fix-power-statistics-when-unplugging-wireless-device-with-battery.patch
@@ -0,0 +1,193 @@
+From 125bdfed22d23f6239b266426acf8fb8508691b8 Mon Sep 17 00:00:00 2001
+From: Monsta <monsta at 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);
+
diff --git a/debian/patches/series b/debian/patches/series
index b0c29df..8fad707 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,5 @@
 0001_fix-backlight-popup-gtkbuilder.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
 2002_compile-extra-man-pages.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mate/mate-power-manager.git



More information about the pkg-mate-commits mailing list