From f928b71543c346271d67bfec823aba2a7db84b75 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 18 Apr 2003 23:32:29 +0000 Subject: [PATCH] some more fixes for weird situations Original commit message from CVS: some more fixes for weird situations --- ext/alsa/gstalsa.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ext/alsa/gstalsa.c b/ext/alsa/gstalsa.c index f04d337..f7c120c 100644 --- a/ext/alsa/gstalsa.c +++ b/ext/alsa/gstalsa.c @@ -1131,6 +1131,9 @@ gst_alsa_start (GstAlsa *this) case SND_PCM_STATE_XRUN: gst_alsa_xrun_recovery (this); return gst_alsa_start (this); + case SND_PCM_STATE_SETUP: + ERROR_CHECK (snd_pcm_prepare (this->handle), "error preparing: %s"); + case SND_PCM_STATE_SUSPENDED: case SND_PCM_STATE_PREPARED: ERROR_CHECK (snd_pcm_start(this->handle), "error starting playback: %s"); break; @@ -1139,6 +1142,11 @@ gst_alsa_start (GstAlsa *this) break; case SND_PCM_STATE_RUNNING: break; + case SND_PCM_STATE_DRAINING: + case SND_PCM_STATE_OPEN: + /* this probably happens when someone replugged a pipeline and we're in a + really weird state because our cothread wasn't busted */ + return FALSE; default: /* it's a bug when we get here */ g_assert_not_reached (); @@ -1147,7 +1155,6 @@ gst_alsa_start (GstAlsa *this) avail = (gint) gst_alsa_update_avail (this); if (avail < 0) return FALSE; - //this->transmitted = this->period_count * this->period_size - avail; gst_alsa_clock_start (this->clock); return TRUE; } -- 2.7.4