alsasink: Fix for being stuck in stop_streaming_threads state
authorRobert Rosengren <robertr@axis.com>
Thu, 30 Mar 2023 14:09:06 +0000 (16:09 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 31 Mar 2023 22:46:28 +0000 (23:46 +0100)
Moving from PLAYING to NULL will set the stop_streaming_threads to TRUE,
but when moving back upwards its not reset to FALSE (as only done in
uncalled init and resume callbacks).

Fix by reseting value in the prepare callback.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4321>

subprojects/gst-plugins-base/ext/alsa/gstalsasink.c

index b5a70a9..6165b4f 100644 (file)
@@ -259,7 +259,7 @@ gst_alsasink_init (GstAlsaSink * alsasink)
   alsasink->is_paused = FALSE;
   alsasink->after_paused = FALSE;
   alsasink->hw_support_pause = FALSE;
-  alsasink->stop_streaming_threads = FALSE;
+  alsasink->stop_streaming_threads = TRUE;
   g_mutex_init (&alsasink->alsa_lock);
   g_mutex_init (&alsasink->delay_lock);
 
@@ -943,6 +943,7 @@ gst_alsasink_prepare (GstAudioSink * asink, GstAudioRingBufferSpec * spec)
       alsa->channels, GST_AUDIO_BASE_SINK (alsa)->ringbuffer);
 #endif /* SND_CHMAP_API_VERSION */
 
+  alsa->stop_streaming_threads = FALSE;
   return TRUE;
 
   /* ERRORS */