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
* 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;