[telepathy-mission-control/telepathy-mission-control-5.2] McdDispatcher: block dispatch operations from finishing until all observers have replied

Simon McVittie simon.mcvittie at collabora.co.uk
Tue Aug 25 09:24:35 PDT 2009


In particular, this means that if an observer or approver calls Claim,
it won't get a reply until all other observers have had a chance to start.
This is necessary if the observer/approver will be acknowledging Text
messages, which a logger observer would miss as a result.
---
 src/mcd-dispatcher.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c
index b21060b..1ab97e1 100644
--- a/src/mcd-dispatcher.c
+++ b/src/mcd-dispatcher.c
@@ -1030,6 +1030,11 @@ observe_channels_cb (TpClient *proxy, const GError *error,
     if (error)
         DEBUG ("Observer returned error: %s", error->message);
 
+    if (context->operation)
+    {
+        _mcd_dispatch_operation_unblock_finished (context->operation);
+    }
+
     mcd_dispatcher_context_release_client_lock (context);
 }
 
@@ -1130,6 +1135,7 @@ mcd_dispatcher_run_observers (McdDispatcherContext *context)
         {
             dispatch_operation_path =
                 mcd_dispatch_operation_get_path (context->operation);
+            _mcd_dispatch_operation_block_finished (context->operation);
         }
 
         context->client_locks++;
-- 
1.5.6.5




More information about the telepathy-commits mailing list