aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib/client.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-01-07 10:46:21 -0600
committerTed Gould <ted@gould.cx>2010-01-07 10:46:21 -0600
commit45e2586ee397d0f6f4501a1ad35fa37201b0e763 (patch)
tree3aa13e9f2642980a0cec0ea2c964fd712ace905a /libdbusmenu-glib/client.c
parentded741c03b1ece0e7da78a3c37e7238b2bb9441e (diff)
parent5c4c4143a5ea25ec408304fdc7463709163ff9a7 (diff)
downloadlibdbusmenu-45e2586ee397d0f6f4501a1ad35fa37201b0e763.tar.gz
libdbusmenu-45e2586ee397d0f6f4501a1ad35fa37201b0e763.tar.bz2
libdbusmenu-45e2586ee397d0f6f4501a1ad35fa37201b0e763.zip
Fixing the dbus handling so that we can pick up the menu again if the server is not initially there, or comes back after disappearing.
Diffstat (limited to 'libdbusmenu-glib/client.c')
-rw-r--r--libdbusmenu-glib/client.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index 59494a3..01dfed7 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -367,8 +367,9 @@ static void
dbus_owner_change (DBusGProxy * proxy, const gchar * name, const gchar * prev, const gchar * new, DbusmenuClient * client)
{
DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);
+ /* g_debug("Owner change: %s %s %s", name, prev, new); */
- if (!(new != NULL && prev == NULL)) {
+ if (!(new[0] != '\0' && prev[0] == '\0')) {
/* If it's not someone new getting on the bus, sorry we
simply just don't care. It's not that your service isn't
important to someone, just not us. You'll find the right
@@ -376,7 +377,7 @@ dbus_owner_change (DBusGProxy * proxy, const gchar * name, const gchar * prev, c
return;
}
- if (g_strcmp0(new, priv->dbus_name)) {
+ if (g_strcmp0(name, priv->dbus_name)) {
/* Again, someone else's service. */
return;
}
@@ -471,6 +472,7 @@ build_proxies (DbusmenuClient * client)
if (error != NULL) {
g_warning("Unable to get property proxy for %s on %s: %s", priv->dbus_name, priv->dbus_object, error->message);
g_error_free(error);
+ build_dbus_proxy(client);
return;
}
g_object_add_weak_pointer(G_OBJECT(priv->propproxy), (gpointer *)&priv->propproxy);
@@ -484,6 +486,7 @@ build_proxies (DbusmenuClient * client)
if (error != NULL) {
g_warning("Unable to get dbusmenu proxy for %s on %s: %s", priv->dbus_name, priv->dbus_object, error->message);
g_error_free(error);
+ build_dbus_proxy(client);
return;
}
g_object_add_weak_pointer(G_OBJECT(priv->menuproxy), (gpointer *)&priv->menuproxy);