diff options
author | Ken VanDine <ken.vandine@canonical.com> | 2010-06-24 11:32:58 -0400 |
---|---|---|
committer | Ken VanDine <ken.vandine@canonical.com> | 2010-06-24 11:32:58 -0400 |
commit | d98486469b525ca805d6cabb7a12972f5980aba9 (patch) | |
tree | f13d98c0c98e966c081392d8ad936015bd54f1fa /libdbusmenu-glib/client.c | |
parent | c6d95ac4d53118c0a2f4b05c760bd03cc55e8c67 (diff) | |
parent | 32f588f06d63bc4742a4718f6212027aface0137 (diff) | |
download | libdbusmenu-d98486469b525ca805d6cabb7a12972f5980aba9.tar.gz libdbusmenu-d98486469b525ca805d6cabb7a12972f5980aba9.tar.bz2 libdbusmenu-d98486469b525ca805d6cabb7a12972f5980aba9.zip |
* New upstream release.
* Adding support for menu shortcuts (LP: #591293)
* Fixing distcheck of documentation builds
* Autogen.sh fix for adding custom prefix (LP: #595565)
* Fixing children property name to match spec (LP: #597321)
* Merging in Debian branch
* debian/control: Switching branch on this branch to be the
dbusmenu-team.
* debian/rules: Updating shlibs to 0.3.3 for shortcut API additions
* Merge from Ubuntu.
Closes: #586069
* debian/control:
- Set Maintainer to pkg-ayatana.
- Add myself as Uploader.
- Update package descriptions.
- Standards-Version: 3.8.4
- Fix Homepage URL.
- Update Vcs-* fields.
* debian/copyright:
- Convert to DEP5 format.
- Add Ken and Sebastien, according to changelog.
- Add Aurélien Gâteau, according to headers.
Diffstat (limited to 'libdbusmenu-glib/client.c')
-rw-r--r-- | libdbusmenu-glib/client.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index c0d3b7a..fa233a4 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -30,6 +30,8 @@ License version 3 and version 2.1 along with this program. If not, see #include "config.h" #endif +#include <dbus/dbus-glib-bindings.h> + #include <libxml/parser.h> #include <libxml/tree.h> @@ -397,6 +399,25 @@ dbus_owner_change (DBusGProxy * proxy, const gchar * name, const gchar * prev, c return build_proxies(client); } +/* This is the response to see if the name has an owner. If + it does, then we should build the proxies here. Race condition + check. */ +static void +name_owner_check (DBusGProxy *proxy, gboolean has_owner, GError *error, gpointer userdata) +{ + if (error != NULL) { + return; + } + + if (!has_owner) { + return; + } + + DbusmenuClient * client = DBUSMENU_CLIENT(userdata); + build_proxies(client); + return; +} + /* This function builds the DBus proxy which will look out for the service coming up. */ static void @@ -426,6 +447,13 @@ build_dbus_proxy (DbusmenuClient * client) dbus_g_proxy_connect_signal(priv->dbusproxy, "NameOwnerChanged", G_CALLBACK(dbus_owner_change), client, NULL); + /* Now let's check to make sure we're not in some race + condition case. */ + org_freedesktop_DBus_name_has_owner_async(priv->dbusproxy, + priv->dbus_name, + name_owner_check, + client); + return; } |