summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2011-05-19 17:30:12 +0100
committerVivek Dasmohapatra <vivek@collabora.co.uk>2011-09-06 14:49:46 +0100
commitadf270a5a0382b0345fa7ee43904409c3157c96e (patch)
tree0d81de8f04fb430a08ca15cbbafc539fb1ad5665
parent52e9df56a40d027e0972158a600c1b7695820113 (diff)
downloadtelepathy-mission-control-adf270a5a0382b0345fa7ee43904409c3157c96e.tar.gz
fd.o #34025 (ish): if we handle a channel internally, record that fact
This means we'll include it in the set of handled channels when we invoke Observers with Recover=TRUE. We don't do this when calling _mcd_request_handle_internally (., ., FALSE) since we're not really behaving like a Handler in that case - more like an Observer or something.
-rw-r--r--src/mcd-dispatch-operation.c4
-rw-r--r--src/mcd-handler-map-priv.h4
-rw-r--r--src/mcd-handler-map.c10
3 files changed, 17 insertions, 1 deletions
diff --git a/src/mcd-dispatch-operation.c b/src/mcd-dispatch-operation.c
index a2b60666..e8823a1a 100644
--- a/src/mcd-dispatch-operation.c
+++ b/src/mcd-dispatch-operation.c
@@ -501,6 +501,10 @@ _mcd_dispatch_operation_check_client_locks (McdDispatchOperation *self)
continue;
DEBUG ("Internal handler for request channel #%u", i);
+ _mcd_handler_map_set_channel_handled_internally (
+ self->priv->handler_map,
+ mcd_channel_get_tp_channel (channel),
+ _mcd_dispatch_operation_get_account_path (self));
_mcd_request_handle_internally (request, channel, TRUE);
}
diff --git a/src/mcd-handler-map-priv.h b/src/mcd-handler-map-priv.h
index 7de292d8..c90603f9 100644
--- a/src/mcd-handler-map-priv.h
+++ b/src/mcd-handler-map-priv.h
@@ -86,6 +86,10 @@ GList *_mcd_handler_map_get_handled_channels (McdHandlerMap *self);
const gchar *_mcd_handler_map_get_channel_account (McdHandlerMap *self,
const gchar *channel_path);
+void _mcd_handler_map_set_channel_handled_internally (McdHandlerMap *self,
+ TpChannel *channel,
+ const gchar *account_path);
+
G_END_DECLS
#endif
diff --git a/src/mcd-handler-map.c b/src/mcd-handler-map.c
index 3e8e69aa..933a0ae2 100644
--- a/src/mcd-handler-map.c
+++ b/src/mcd-handler-map.c
@@ -423,4 +423,12 @@ _mcd_handler_map_get_channel_account (McdHandlerMap *self,
channel_path);
}
-
+void
+_mcd_handler_map_set_channel_handled_internally (McdHandlerMap *self,
+ TpChannel *channel,
+ const gchar *account_path)
+{
+ _mcd_handler_map_set_channel_handled (self, channel,
+ tp_dbus_daemon_get_unique_name (self->priv->dbus_daemon),
+ NULL, account_path);
+}