diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-04-17 16:16:29 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-04-17 16:16:29 +0200 |
commit | 71076cad544d34cc7fa1998313af0fdb179969ee (patch) | |
tree | 46666bce1d53216d6d6966c4f88c7be3eeaf4a9a /gst | |
parent | 63044be8e5d9c6f2fedae13bf0016eeeea01e63b (diff) | |
download | gst-plugins-bad-71076cad544d34cc7fa1998313af0fdb179969ee.tar.gz gst-plugins-bad-71076cad544d34cc7fa1998313af0fdb179969ee.tar.bz2 gst-plugins-bad-71076cad544d34cc7fa1998313af0fdb179969ee.zip |
rtpsession: join the RTCP thread
Avoid a case where a joinable thread would be left unjoined, which leaked the
thread structure.
Fixes #577318.
Diffstat (limited to 'gst')
-rw-r--r-- | gst/rtpmanager/gstrtpsession.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index e2a6927f..035d82a8 100644 --- a/gst/rtpmanager/gstrtpsession.c +++ b/gst/rtpmanager/gstrtpsession.c @@ -967,6 +967,11 @@ start_rtcp_thread (GstRtpSession * rtpsession) GST_RTP_SESSION_LOCK (rtpsession); rtpsession->priv->stop_thread = FALSE; if (rtpsession->priv->thread_stopped) { + /* if the thread stopped, and we still have a handle to the thread, join it + * now. We can safely join with the lock held, the thread will not take it + * anymore. */ + if (rtpsession->priv->thread) + g_thread_join (rtpsession->priv->thread); /* only create a new thread if the old one was stopped. Otherwise we can * just reuse the currently running one. */ rtpsession->priv->thread = |