[telepathy-mission-control/master] McdDispatcher: if there are no possible handlers for a request, assume the preferred handler is OK

Simon McVittie simon.mcvittie at collabora.co.uk
Tue Oct 20 08:24:01 PDT 2009


This bypasses logic elsewhere in MC that terminates dispatching early if
there are no suitable handlers at all.
---
 src/mcd-dispatcher.c |   22 +++++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c
index e11e121..599d6d9 100644
--- a/src/mcd-dispatcher.c
+++ b/src/mcd-dispatcher.c
@@ -423,9 +423,29 @@ mcd_dispatcher_dup_possible_handlers (McdDispatcher *self,
         }
     }
 
-    /* if no handlers can take them all, fail */
+    /* if no handlers can take them all, fail - unless the channels are
+     * a request that specified a preferred handler, in which case assume
+     * it's suitable */
     if (handlers == NULL)
     {
+        const gchar *preferred_handler = NULL;
+
+        if (channels->data != NULL)
+        {
+            preferred_handler =
+                _mcd_channel_get_request_preferred_handler (channels->data);
+        }
+
+        if (preferred_handler != NULL && preferred_handler[0] != '\0' &&
+            _mcd_client_registry_lookup (self->priv->clients,
+                                         preferred_handler) != NULL)
+        {
+            ret = g_new0 (gchar *, 2);
+            ret[0] = g_strdup (preferred_handler);
+            ret[1] = NULL;
+            return ret;
+        }
+
         return NULL;
     }
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list