aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-09-17 16:12:42 -0500
committerTed Gould <ted@canonical.com>2009-09-17 16:12:42 -0500
commitfa0e53c2e27f0c8ed7cbfa839265e91b4fdf8d67 (patch)
treedf5b9eb931cb501006da3036264286e2f35af264 /libdbusmenu-glib
parent15c11261bd45e2732a31b2fa235cc2a6261452e4 (diff)
downloadlibdbusmenu-fa0e53c2e27f0c8ed7cbfa839265e91b4fdf8d67.tar.gz
libdbusmenu-fa0e53c2e27f0c8ed7cbfa839265e91b4fdf8d67.tar.bz2
libdbusmenu-fa0e53c2e27f0c8ed7cbfa839265e91b4fdf8d67.zip
Adding in a second checking of the layout if we look for it while we're still requesting it. We're not sure if this creates an issue between the syncing of the two objects.
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r--libdbusmenu-glib/client.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index 4ae4f75..1bf4e19 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -66,6 +66,7 @@ struct _DbusmenuClientPrivate
DBusGProxy * menuproxy;
DBusGProxy * propproxy;
DBusGProxyCall * layoutcall;
+ gboolean check_layout;
DBusGProxy * dbusproxy;
@@ -194,6 +195,7 @@ dbusmenu_client_init (DbusmenuClient *self)
priv->menuproxy = NULL;
priv->propproxy = NULL;
priv->layoutcall = NULL;
+ priv->check_layout = FALSE;
priv->dbusproxy = NULL;
@@ -721,6 +723,11 @@ update_layout_cb (DBusGProxy * proxy, DBusGProxyCall * call, void * data)
/* g_debug("Root is now: 0x%X", (unsigned int)priv->root); */
g_signal_emit(G_OBJECT(client), signals[LAYOUT_UPDATED], 0, TRUE);
+ if (priv->check_layout) {
+ priv->check_layout = FALSE;
+ update_layout(client);
+ }
+
return;
}
@@ -736,6 +743,7 @@ update_layout (DbusmenuClient * client)
}
if (priv->layoutcall != NULL) {
+ priv->check_layout = TRUE;
return;
}
@@ -803,16 +811,9 @@ dbusmenu_client_get_root (DbusmenuClient * client)
return NULL;
}
-#if 0
-/* Seems to be a bug in dbus-glib that assert here, I think because
- multiple people try and grab it. We're going to comment this out
- for now as everyone should be listening to the root changed signal
- anyway. */
if (priv->layoutcall != NULL) {
- /* Will end the current call and block on it's completion */
- update_layout_cb(priv->propproxy, priv->layoutcall, client);
+ priv->check_layout = TRUE;
}
-#endif
return priv->root;
}