rtsp-media: Only unprepare a media if it was not already unpreparing anyway
authorSebastian Dröge <sebastian@centricular.com>
Wed, 6 Oct 2021 15:19:29 +0000 (18:19 +0300)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 7 Oct 2021 05:28:19 +0000 (05:28 +0000)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1083>

subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-media.c

index 2ff875b..0ca0d9f 100644 (file)
@@ -4101,6 +4101,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);
@@ -4126,6 +4128,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);