← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/dbusmenu/crash-and-repeat into lp:dbusmenu

 

Ted Gould has proposed merging lp:~ted/dbusmenu/crash-and-repeat into lp:dbusmenu.

Requested reviews:
  DBus Menu Team (dbusmenu-team)


Little fixes for big bugs.

- This fixes the "insane duplication" bug as we were keeping an extra
reference to the old root in the parse function.

- Removes a warning that was a real issue, and wasn't useful.

- Resets the revision counters when we loose a connection ensuring a
full reset of the menus.
-- 
https://code.launchpad.net/~ted/dbusmenu/crash-and-repeat/+merge/22533
Your team ayatana-commits is subscribed to branch lp:dbusmenu.
=== modified file 'configure.ac'
--- configure.ac	2010-03-04 17:10:22 +0000
+++ configure.ac	2010-03-31 14:18:15 +0000
@@ -1,11 +1,11 @@
 
-AC_INIT(libdbusmenu, 0.2.7, ted@xxxxxxxxxxxxx)
+AC_INIT(libdbusmenu, 0.2.8, ted@xxxxxxxxxxxxx)
 AC_COPYRIGHT([Copyright 2009,2010 Canonical])
 
 AC_PREREQ(2.62)
 
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(libdbusmenu, 0.2.7, [-Wno-portability])
+AM_INIT_AUTOMAKE(libdbusmenu, 0.2.8, [-Wno-portability])
 
 AM_MAINTAINER_MODE
 
@@ -78,7 +78,7 @@
 ###########################
 
 LIBDBUSMENU_CURRENT=1
-LIBDBUSMENU_REVISION=4
+LIBDBUSMENU_REVISION=5
 LIBDBUSMENU_AGE=0
 
 AC_SUBST(LIBDBUSMENU_CURRENT)

=== modified file 'libdbusmenu-glib/client.c'
--- libdbusmenu-glib/client.c	2010-02-24 19:17:38 +0000
+++ libdbusmenu-glib/client.c	2010-03-31 14:18:15 +0000
@@ -337,7 +337,12 @@
 	g_return_if_fail(priv->root != NULL);
 
 	DbusmenuMenuitem * menuitem = dbusmenu_menuitem_find_id(priv->root, id);
-	g_return_if_fail(menuitem != NULL);
+	if (menuitem == NULL) {
+		#ifdef MASSIVEDEBUGGING
+		g_debug("Property update '%s' on id %d which couldn't be found", property, id);
+		#endif
+		return;
+	}
 
 	dbusmenu_menuitem_property_set_value(menuitem, property, value);
 
@@ -444,6 +449,9 @@
 		priv->layoutcall = NULL;
 	}
 
+	priv->current_revision = 0;
+	priv->my_revision = 0;
+
 	build_dbus_proxy(DBUSMENU_CLIENT(userdata));
 	return;
 }
@@ -794,13 +802,17 @@
 		   clean up that old root */
 		if (oldroot != NULL) {
 			dbusmenu_menuitem_set_root(oldroot, FALSE);
-			g_object_unref(oldroot);
 		}
 
 		/* If the root changed we can signal that */
 		g_signal_emit(G_OBJECT(client), signals[ROOT_CHANGED], 0, priv->root, TRUE);
 	}
 
+	/* We need to unref it in this function no matter */
+	if (oldroot != NULL) {
+		g_object_unref(oldroot);
+	}
+
 	return 1;
 }
 


Follow ups