From b8ae2570d9a4807fdd7d97b000a026cddde1b5ae Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 26 Nov 2013 16:25:37 +0100 Subject: [PATCH] media: take the right lock in gst_rtsp_media_set_pipeline_state() We need to take the state_lock when calling this method. --- gst/rtsp-server/rtsp-media.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/gst/rtsp-server/rtsp-media.c b/gst/rtsp-server/rtsp-media.c index 06c2363..90948c0 100644 --- a/gst/rtsp-server/rtsp-media.c +++ b/gst/rtsp-server/rtsp-media.c @@ -2138,15 +2138,8 @@ gst_rtsp_media_get_time_provider (GstRTSPMedia * media, const gchar * address, return provider; } -/** - * gst_rtsp_media_set_pipeline_state: - * @media: a #GstRTSPMedia - * @state: the target state of the pipeline - * - * Set the state of the pipeline managed by @media to @state - */ -void -gst_rtsp_media_set_pipeline_state (GstRTSPMedia * media, GstState state) +static void +media_set_pipeline_state_locked (GstRTSPMedia * media, GstState state) { GstRTSPMediaPrivate *priv = media->priv; @@ -2166,6 +2159,23 @@ gst_rtsp_media_set_pipeline_state (GstRTSPMedia * media, GstState state) } /** + * gst_rtsp_media_set_pipeline_state: + * @media: a #GstRTSPMedia + * @state: the target state of the pipeline + * + * Set the state of the pipeline managed by @media to @state + */ +void +gst_rtsp_media_set_pipeline_state (GstRTSPMedia * media, GstState state) +{ + g_return_if_fail (GST_IS_RTSP_MEDIA (media)); + + g_rec_mutex_lock (&media->priv->state_lock); + media_set_pipeline_state_locked (media, state); + g_rec_mutex_unlock (&media->priv->state_lock); +} + +/** * gst_rtsp_media_set_state: * @media: a #GstRTSPMedia * @state: the target state of the media @@ -2254,7 +2264,7 @@ gst_rtsp_media_set_state (GstRTSPMedia * media, GstState state, if (priv->target_state != state) { if (do_state) - gst_rtsp_media_set_pipeline_state (media, state); + media_set_pipeline_state_locked (media, state); g_signal_emit (media, gst_rtsp_media_signals[SIGNAL_NEW_STATE], 0, state, NULL); -- 2.7.4