[Telepathy-commits] [telepathy-mission-control/master] Requests errors have nothing to do with dispatcher

Alberto Mardegan alberto.mardegan at nokia.com
Mon Nov 17 00:05:21 PST 2008


Leave handling of errors on channel requested through the compat interface to
mcd-account-compat.c. Don't emit channel request errors on the dispatcher.
---
 src/mcd-account-compat.c |   26 ++++++++++++--------------
 src/mcd-service.c        |   27 ---------------------------
 2 files changed, 12 insertions(+), 41 deletions(-)

diff --git a/src/mcd-account-compat.c b/src/mcd-account-compat.c
index 80a982e..ba27d3c 100644
--- a/src/mcd-account-compat.c
+++ b/src/mcd-account-compat.c
@@ -39,6 +39,7 @@
 #include "mcd-account-compat.h"
 #include "mcd-account-manager.h"
 #include "mcd-misc.h"
+#include "mcd-service.h"
 #include "_gen/interfaces.h"
 
 static guint last_operation_id = 1;
@@ -254,27 +255,24 @@ on_channel_status_changed (McdChannel *channel, McdChannelStatus status,
     g_debug ("%s (%u)", G_STRFUNC, status);
     g_return_if_fail (MCD_IS_ACCOUNT (account));
 
-    if (status == MCD_CHANNEL_DISPATCHING)
-    {
-        /* from now on, errors are reported by the dispatcher */
-        g_signal_handlers_disconnect_by_func (channel,
-                                              on_channel_status_changed,
-                                              account);
-    }
-    else if (status == MCD_CHANNEL_FAILED)
+    if (status == MCD_CHANNEL_FAILED)
     {
+        guint requestor_serial;
+        gchar *requestor_client_id;
         const GError *error;
         McdMaster *master;
-        McdDispatcher *dispatcher = NULL;
 
         master = mcd_master_get_default ();
-        g_object_get (master, "dispatcher", &dispatcher, NULL);
-        g_return_if_fail (dispatcher != NULL);
+        g_return_if_fail (MCD_IS_SERVICE (master));
 
         error = _mcd_channel_get_error (channel);
-        g_signal_emit_by_name (G_OBJECT(dispatcher),
-                               "dispatch-failed", channel, error);
-        g_object_unref (dispatcher);
+        g_object_get (channel,
+                      "requestor-serial", &requestor_serial,
+                      "requestor-client-id", &requestor_client_id,
+                      NULL);
+        g_signal_emit_by_name (master, "mcd-error", requestor_serial,
+                               requestor_client_id, error->code);
+        g_free (requestor_client_id);
     }
 }
 
diff --git a/src/mcd-service.c b/src/mcd-service.c
index 1c9a012..5c2aeea 100644
--- a/src/mcd-service.c
+++ b/src/mcd-service.c
@@ -753,28 +753,6 @@ _on_dispatcher_channel_dispatched (McdDispatcher *dispatcher,
 }
 
 static void
-_on_dispatcher_channel_dispatch_failed (McdDispatcher *dispatcher,
-					McdChannel *channel, GError *error,
-					McdService *obj)
-{
-    guint requestor_serial;
-    gchar *requestor_client_id;
- 
-    g_debug ("%s", G_STRFUNC);
-    g_object_get (channel, "requestor-serial", &requestor_serial,
-		  "requestor-client-id", &requestor_client_id, NULL);
-    
-    if (requestor_client_id)
-    {
-	g_signal_emit_by_name (obj, "mcd-error", requestor_serial,
-			       requestor_client_id, error->code);
-	g_free (requestor_client_id);
-    }
-    
-    g_debug ("MC ERROR (channel request): %s", error->message);
-}
-
-static void
 mcd_dispose (GObject * obj)
 {
     McdServicePrivate *priv;
@@ -817,9 +795,6 @@ mcd_dispose (GObject * obj)
 	g_signal_handlers_disconnect_by_func (priv->dispatcher,
 					  _on_dispatcher_channel_dispatched,
 					  self);
-	g_signal_handlers_disconnect_by_func (priv->dispatcher,
-				      _on_dispatcher_channel_dispatch_failed,
-				      self);
 	g_object_unref (priv->dispatcher);
     }
 
@@ -866,8 +841,6 @@ mcd_service_constructed (GObject *obj)
 		      G_CALLBACK (_on_dispatcher_channel_removed), obj);
     g_signal_connect (priv->dispatcher, "dispatched",
 		      G_CALLBACK (_on_dispatcher_channel_dispatched), obj);
-    g_signal_connect (priv->dispatcher, "dispatch-failed",
-		      G_CALLBACK (_on_dispatcher_channel_dispatch_failed), obj);
 
     mcd_register_dbus_object (MCD_OBJECT (obj));
     mcd_debug_print_tree (obj);
-- 
1.5.6.5




More information about the Telepathy-commits mailing list