souphttpsink: Protect against spurious wakeups during startup
authorSebastian Dröge <sebastian@centricular.com>
Fri, 28 Jan 2022 13:47:44 +0000 (15:47 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 28 Jan 2022 13:47:44 +0000 (15:47 +0200)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>

subprojects/gst-plugins-good/ext/soup/gstsouphttpclientsink.c

index e094b2e..e846596 100644 (file)
@@ -575,7 +575,7 @@ gst_soup_http_client_sink_start (GstBaseSink * sink)
     g_source_attach (source, souphttpsink->context);
     g_source_unref (source);
 
-    souphttpsink->loop = g_main_loop_new (souphttpsink->context, TRUE);
+    souphttpsink->loop = g_main_loop_new (souphttpsink->context, FALSE);
 
     g_mutex_lock (&souphttpsink->mutex);
 
@@ -591,7 +591,8 @@ gst_soup_http_client_sink_start (GstBaseSink * sink)
     }
 
     GST_LOG_OBJECT (souphttpsink, "waiting for main loop thread to start up");
-    g_cond_wait (&souphttpsink->cond, &souphttpsink->mutex);
+    while (!g_main_loop_is_running (souphttpsink->loop))
+      g_cond_wait (&souphttpsink->cond, &souphttpsink->mutex);
     g_mutex_unlock (&souphttpsink->mutex);
     GST_LOG_OBJECT (souphttpsink, "main loop thread running");
   }