diff options
author | Olivier CrĂȘte <olivier.crete@collabora.co.uk> | 2009-09-15 22:09:53 -0400 |
---|---|---|
committer | Youness Alaoui <youness.alaoui@collabora.co.uk> | 2009-09-17 04:43:21 -0400 |
commit | 1dc5ac66b86a96ce22181896aa388be7dda096b7 (patch) | |
tree | 07bc327fe26df8b04d739d29e285908722d5159f /gst | |
parent | 0f0450f58dba5d57ec81dc4deaf9f43efbfa9734 (diff) | |
download | libnice-1dc5ac66b86a96ce22181896aa388be7dda096b7.tar.gz |
Properly cleanup the idle source in the gst src
Also, do not re-create it if it already exists
Diffstat (limited to 'gst')
-rw-r--r-- | gst/gstnicesrc.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/gst/gstnicesrc.c b/gst/gstnicesrc.c index ddae37e..b86f096 100644 --- a/gst/gstnicesrc.c +++ b/gst/gstnicesrc.c @@ -219,6 +219,7 @@ gst_nice_src_unlock_idler (gpointer data) g_main_loop_quit (nicesrc->mainloop); if (nicesrc->idle_source) { + g_source_destroy (nicesrc->idle_source); g_source_unref (nicesrc->idle_source); nicesrc->idle_source = NULL; } @@ -237,10 +238,12 @@ gst_nice_src_unlock (GstBaseSrc *src) g_main_loop_quit (nicesrc->mainloop); - nicesrc->idle_source = g_idle_source_new (); - g_source_set_priority (nicesrc->idle_source, G_PRIORITY_HIGH); - g_source_set_callback (nicesrc->idle_source, gst_nice_src_unlock_idler, src, NULL); - g_source_attach (nicesrc->idle_source, g_main_loop_get_context (nicesrc->mainloop)); + if (!nicesrc->idle_source) { + nicesrc->idle_source = g_idle_source_new (); + g_source_set_priority (nicesrc->idle_source, G_PRIORITY_HIGH); + g_source_set_callback (nicesrc->idle_source, gst_nice_src_unlock_idler, src, NULL); + g_source_attach (nicesrc->idle_source, g_main_loop_get_context (nicesrc->mainloop)); + } GST_OBJECT_UNLOCK (src); return TRUE; @@ -253,8 +256,10 @@ gst_nice_src_unlock_stop (GstBaseSrc *src) GST_OBJECT_LOCK (src); nicesrc->unlocked = FALSE; - if (nicesrc->idle_source) + if (nicesrc->idle_source) { g_source_destroy (nicesrc->idle_source); + g_source_unref(nicesrc->idle_source); + } nicesrc->idle_source = NULL; GST_OBJECT_UNLOCK (src); |