alsasink->is_paused = FALSE;
alsasink->after_paused = FALSE;
alsasink->hw_support_pause = FALSE;
- alsasink->stop_streaming_threads = TRUE;
g_mutex_init (&alsasink->alsa_lock);
g_mutex_init (&alsasink->delay_lock);
alsa->channels, GST_AUDIO_BASE_SINK (alsa)->ringbuffer);
#endif /* SND_CHMAP_API_VERSION */
- alsa->stop_streaming_threads = FALSE;
return TRUE;
/* ERRORS */
GST_ALSA_SINK_LOCK (asink);
while (cptr > 0) {
- if (alsa->stop_streaming_threads)
- goto write_error;
/* start by doing a blocking wait for free space. Set the timeout
* to 4 times the period time */
err = snd_pcm_wait (alsa->handle, (4 * alsa->period_time / 1000));
CHECK (snd_pcm_pause (alsa->handle, 1), pause_error);
GST_DEBUG_OBJECT (alsa, "pause done");
alsa->is_paused = TRUE;
- alsa->stop_streaming_threads = TRUE;
GST_ALSA_SINK_UNLOCK (asink);
} else {
gst_alsasink_stop (asink);
GST_ERROR_OBJECT (alsa, "alsa-pause: pcm pause error: %s",
snd_strerror (err));
GST_ALSA_SINK_UNLOCK (asink);
+ gst_alsasink_stop (asink);
return;
}
}
GST_ALSA_SINK_UNLOCK (asink);
}
- alsa->stop_streaming_threads = FALSE;
return;
resume_error:
GST_DEBUG_OBJECT (alsa, "prepare");
CHECK (snd_pcm_prepare (alsa->handle), prepare_error);
GST_DEBUG_OBJECT (alsa, "stop done");
- alsa->stop_streaming_threads = TRUE;
GST_ALSA_SINK_UNLOCK (asink);
return;