alsasink: Fix for being stuck in stop_streaming_threads state

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>
This commit is contained in:
Robert Rosengren 2023-03-30 16:09:06 +02:00 committed by Tim-Philipp Müller
parent 5c9988b759
commit b2feff23bc

View file

@ -259,7 +259,7 @@ gst_alsasink_init (GstAlsaSink * alsasink)
alsasink->is_paused = FALSE; alsasink->is_paused = FALSE;
alsasink->after_paused = FALSE; alsasink->after_paused = FALSE;
alsasink->hw_support_pause = 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->alsa_lock);
g_mutex_init (&alsasink->delay_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); alsa->channels, GST_AUDIO_BASE_SINK (alsa)->ringbuffer);
#endif /* SND_CHMAP_API_VERSION */ #endif /* SND_CHMAP_API_VERSION */
alsa->stop_streaming_threads = FALSE;
return TRUE; return TRUE;
/* ERRORS */ /* ERRORS */