[telepathy-mission-control/master] McdAccount: Requests: move _mcd_account_online_request() from create_request to account_request_common

Simon McVittie simon.mcvittie at collabora.co.uk
Fri Apr 3 10:36:34 PDT 2009


The ChannelDispatcher API will want to call create_request() immediately,
but only call _mcd_account_online_request() when the user calls Proceed.
---
 src/mcd-account-requests.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/mcd-account-requests.c b/src/mcd-account-requests.c
index bd7aba2..5048aad 100644
--- a/src/mcd-account-requests.c
+++ b/src/mcd-account-requests.c
@@ -187,10 +187,6 @@ create_request (McdAccount *account, GHashTable *properties,
     g_signal_connect_after (g_object_ref (channel), "status-changed",
                             G_CALLBACK (on_channel_status_changed), account);
 
-    /* the callback releases this reference */
-    _mcd_account_online_request (account, online_request_cb,
-                                 g_object_ref (channel));
-
     return channel;
 }
 
@@ -210,6 +206,7 @@ account_request_common (McdAccount *account, GHashTable *properties,
 
     channel = create_request (account, properties, user_time,
                               preferred_handler, use_existing, &error);
+
     if (error)
     {
         g_assert (channel == NULL);
@@ -218,6 +215,14 @@ account_request_common (McdAccount *account, GHashTable *properties,
         return;
     }
 
+    /* Put the account online if necessary, and when that's finished,
+     * make the actual request. This is the equivalent of Proceed() in the
+     * new API.
+     *
+     * (The callback releases this reference.) */
+    _mcd_account_online_request (account, online_request_cb,
+                                 g_object_ref (channel));
+
     request_id = _mcd_channel_get_request_path (channel);
     DEBUG ("returning %s", request_id);
     if (use_existing)
@@ -231,7 +236,7 @@ account_request_common (McdAccount *account, GHashTable *properties,
     _mcd_dispatcher_add_request (dispatcher, account, channel);
 
     /* we still have a ref returned by create_request(), which is no longer
-     * necessary */
+     * necessary at this point */
     g_object_unref (channel);
 }
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list