From d6954c785d635be875b896ac9f4812e400b39455 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Fri, 4 Feb 2011 15:37:51 -0500 Subject: [PATCH] gdesktopappinfo: Asynchronously flush after sending notification If we were the initial connection owner, unref will destroy the connection immediately, and we may lose messages. Asynchronously flush to avoid that. https://bugzilla.gnome.org/show_bug.cgi?id=641411 --- gio/gdesktopappinfo.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c index f557538..1fe5ecf 100644 --- a/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c @@ -1096,7 +1096,14 @@ _g_desktop_app_info_launch_uris_internal (GAppInfo *appinfo, * after launching an app. See http://bugzilla.gnome.org/606960 */ if (session_bus != NULL) - g_object_unref (session_bus); + { + /* This asynchronous flush holds a reference until it completes, + * which ensures that the following unref won't immediately kill + * the connection if we were the initial owner. + */ + g_dbus_connection_flush (session_bus, NULL, NULL, NULL); + g_object_unref (session_bus); + } completed = TRUE; -- 2.7.4