[Telepathy-commits] [telepathy-gabble/master] MediaStream: prevent idle callback for initial codecs/candidates after stream is disposed

Senko Rasic senko.rasic at collabora.co.uk
Fri Dec 5 03:31:49 PST 2008


---
 src/media-stream.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/src/media-stream.c b/src/media-stream.c
index 56e3609..b326e22 100644
--- a/src/media-stream.c
+++ b/src/media-stream.c
@@ -112,6 +112,9 @@ struct _GabbleMediaStreamPrivate
   /* signal handler ID for content REMOVED signal */
   gboolean removed_id;
 
+  /* source ID for initial codecs/candidates getter */
+  gboolean initial_getter_id;
+
   /* These are really booleans, but gboolean is signed. Thanks, GLib */
   unsigned closed:1;
   unsigned dispose_has_run:1;
@@ -175,6 +178,8 @@ _get_initial_codecs_and_candidates (gpointer user_data)
   GabbleMediaStream *stream = GABBLE_MEDIA_STREAM (user_data);
   GabbleMediaStreamPrivate *priv = GABBLE_MEDIA_STREAM_GET_PRIVATE (stream);
 
+  priv->initial_getter_id = 0;
+
   /* we can immediately get the codecs if we're responder */
   new_remote_codecs_cb (priv->content,
       gabble_jingle_media_rtp_get_remote_codecs (GABBLE_JINGLE_MEDIA_RTP (priv->content)),
@@ -216,7 +221,8 @@ gabble_media_stream_constructor (GType type, guint n_props,
        * created, but we want to let it parse the initiation (if
        * initiated by remote end) before we pick up initial
        * codecs and candidates. */
-      g_idle_add (_get_initial_codecs_and_candidates, stream);
+      priv->initial_getter_id =
+          g_idle_add (_get_initial_codecs_and_candidates, stream);
     }
 
   return obj;
@@ -560,6 +566,12 @@ gabble_media_stream_dispose (GObject *object)
   if (priv->dispose_has_run)
     return;
 
+  if (priv->initial_getter_id != 0)
+    {
+      g_source_remove (priv->initial_getter_id);
+      priv->initial_getter_id = 0;
+    }
+
   _gabble_media_stream_close (self);
 
   g_signal_emit (self, signals[DESTROY], 0);
-- 
1.5.6.5



More information about the Telepathy-commits mailing list