summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivek Dasmohapatra <vivek@collabora.co.uk>2011-03-24 19:59:42 +0000
committerVivek Dasmohapatra <vivek@collabora.co.uk>2011-04-05 14:19:10 +0100
commit07a391599e392755170b23c15c6301178e6d3961 (patch)
tree3d12d17aaff25a38f3c4b6ded85f55c037bb9b7f
parent9cf8902965acc2d258e3c71448ce9ce05ed202b1 (diff)
downloadtelepathy-mission-control-07a391599e392755170b23c15c6301178e6d3961.tar.gz
Dispatch internal operations after the observers have finished.
-rw-r--r--src/mcd-dispatch-operation.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/mcd-dispatch-operation.c b/src/mcd-dispatch-operation.c
index 682f6856..f68ea7a0 100644
--- a/src/mcd-dispatch-operation.c
+++ b/src/mcd-dispatch-operation.c
@@ -479,6 +479,30 @@ _mcd_dispatch_operation_check_client_locks (McdDispatchOperation *self)
return;
}
+ if (_mcd_dispatch_operation_is_internal (self))
+ {
+ guint i = 0;
+ GList *list = self->priv->channels;
+
+ DEBUG ("Invoking internal handlers for requests");
+ for (; list != NULL; list = g_list_next (list), i++)
+ {
+ McdChannel *channel = list->data;
+ McdRequest *request = _mcd_channel_get_request (channel);
+
+ if (request == NULL)
+ continue;
+
+ DEBUG ("Internal handler for request channel #%u", i);
+ _mcd_request_handle_internally (request, channel, TRUE);
+ }
+
+ /* The rest of this function deals with externally handled requests: *
+ * Since these requests were internal, we need not trouble ourselves *
+ * further (and infact would probably trigger errors if we tried) */
+ return;
+ }
+
approval = g_queue_peek_head (self->priv->approvals);
/* if we've been claimed, respond, then do not call HandleChannels */