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;
}
/**
+ * 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
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);