[telepathy-stream-engine/refs/tags/telepathy-stream-engine_0.5.10] Use switch in sync handler

Olivier Crête olivier.crete at collabora.co.uk
Mon Oct 26 09:28:22 PDT 2009


---
 src/tp-stream-engine.c |  102 +++++++++++++++++++++++-------------------------
 1 files changed, 49 insertions(+), 53 deletions(-)

diff --git a/src/tp-stream-engine.c b/src/tp-stream-engine.c
index b585f03..18fb598 100644
--- a/src/tp-stream-engine.c
+++ b/src/tp-stream-engine.c
@@ -971,62 +971,58 @@ static GstBusSyncReply
 bus_sync_handler (GstBus *bus G_GNUC_UNUSED, GstMessage *message, gpointer data)
 {
   TpStreamEngine *self = TP_STREAM_ENGINE (data);
-  GList *item;
-  gboolean handled = FALSE;
-
-  if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
-    return GST_BUS_PASS;
-
-  if (!gst_structure_has_name (message->structure, "prepare-xwindow-id"))
-    return GST_BUS_PASS;
-
 
-  g_mutex_lock (self->priv->mutex);
-
-  if (self->priv->preview)
-    {
-      handled = tp_stream_engine_video_sink_bus_sync_message (
-          TP_STREAM_ENGINE_VIDEO_SINK (self->priv->preview), message);
-      if (handled)
-        goto done;
-    }
-
-  for (item = g_list_first (self->priv->preview_sinks);
-       item && !handled;
-       item = g_list_next (item))
-    {
-      TpStreamEngineVideoSink *preview =
-          TP_STREAM_ENGINE_VIDEO_SINK (item->data);
-
-      handled = tp_stream_engine_video_sink_bus_sync_message (preview, message);
-      if (handled)
-        goto done;
-    }
-
-  for (item = g_list_first (self->priv->output_sinks);
-       item && !handled;
-       item = g_list_next (item))
-    {
-      TpStreamEngineVideoSink *output =
-          TP_STREAM_ENGINE_VIDEO_SINK (item->data);
-
-      handled = tp_stream_engine_video_sink_bus_sync_message (output,
-          message);
-      if (handled)
-        goto done;
-    }
-
- done:
-  g_mutex_unlock (self->priv->mutex);
-
-
-  if (handled)
+  switch (GST_MESSAGE_TYPE (message))
     {
-      gst_message_unref (message);
-      return GST_BUS_DROP;
+    case GST_MESSAGE_ELEMENT:
+      {
+        GList *item;
+        gboolean handled = FALSE;
+
+        if (!gst_structure_has_name (message->structure, "prepare-xwindow-id"))
+          return GST_BUS_PASS;
+
+
+        g_mutex_lock (self->priv->mutex);
+        for (item = g_list_first (self->priv->preview_sinks);
+             item && !handled;
+             item = g_list_next (item))
+          {
+            TpStreamEngineVideoSink *preview = item->data;
+
+            handled = tp_stream_engine_video_sink_bus_sync_message (preview, message);
+            if (handled)
+              break;
+          }
+
+        if (!handled)
+          {
+            for (item = g_list_first (self->priv->output_sinks);
+                 item && !handled;
+                 item = g_list_next (item))
+              {
+                TpStreamEngineVideoSink *output = item->data;
+
+                handled = tp_stream_engine_video_sink_bus_sync_message (output,
+                    message);
+                if (handled)
+                  break;
+              }
+          }
+        g_mutex_unlock (self->priv->mutex);
+
+        if (handled)
+          {
+            gst_message_unref (message);
+            return GST_BUS_DROP;
+          }
+        else
+          return GST_BUS_PASS;
+      }
+      break;
+    default:
+      return GST_BUS_PASS;
     }
-  else
-    return GST_BUS_PASS;
 }
 
 static void
-- 
1.5.6.5




More information about the telepathy-commits mailing list