summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2021-10-06 18:19:29 +0300
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-10-31 14:58:56 +0000
commit665a60452c68de9b5bd2789ff2d28dd247a9cb31 (patch)
treee4ae18964608bd97612bbcd0d49532c59ce8b8ab
parent516631c1b05a44126019c050efa33057fced8e9e (diff)
rtsp-media: Only unprepare a media if it was not already unpreparing anyway
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/merge_requests/216>
-rw-r--r--gst/rtsp-server/rtsp-media.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gst/rtsp-server/rtsp-media.c b/gst/rtsp-server/rtsp-media.c
index 6033531..0f8b3af 100644
--- a/gst/rtsp-server/rtsp-media.c
+++ b/gst/rtsp-server/rtsp-media.c
@@ -4083,6 +4083,8 @@ gst_rtsp_media_unprepare (GstRTSPMedia * media)
priv->prepare_count--;
if (priv->prepare_count > 0)
goto is_busy;
+ if (priv->status == GST_RTSP_MEDIA_STATUS_UNPREPARING)
+ goto is_unpreparing;
GST_INFO ("unprepare media %p", media);
set_target_state (media, GST_STATE_NULL, FALSE);
@@ -4108,6 +4110,12 @@ was_unprepared:
GST_INFO ("media %p was already unprepared", media);
return TRUE;
}
+is_unpreparing:
+ {
+ g_rec_mutex_unlock (&priv->state_lock);
+ GST_INFO ("media %p is already unpreparing", media);
+ return TRUE;
+ }
is_busy:
{
GST_INFO ("media %p still prepared %d times", media, priv->prepare_count);