X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=snd_alsa.c;h=173a9f52bb43ffb41308b2ac19515f07e9aa9eba;hp=e4a9ffe0897c528f89e8b1a84c2f03c2f4d97a76;hb=c205fc63e780877ef0b6b3cfe747e2f9e8228c40;hpb=844bad4f7cddcc970715f9fc9d22d74896cc9df4 diff --git a/snd_alsa.c b/snd_alsa.c index e4a9ffe0..173a9f52 100644 --- a/snd_alsa.c +++ b/snd_alsa.c @@ -201,7 +201,8 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) snd_renderbuffer = Snd_CreateRingBuffer(requested, 0, NULL); expected_delay = 0; alsasoundtime = 0; - alsaspeakerlayout = true; + if (snd_channellayout.integer == SND_CHANNELLAYOUT_AUTO) + Cvar_SetValueQuick (&snd_channellayout, SND_CHANNELLAYOUT_ALSA); return true; @@ -294,6 +295,11 @@ static snd_pcm_sframes_t SndSys_Write (const unsigned char* buffer, unsigned int written, snd_strerror (written)); } } + if (written > 0) + { + snd_renderbuffer->startframe += written; + expected_delay += written; + } return written; } @@ -324,12 +330,7 @@ void SndSys_Submit (void) if (nbframes > limit) { written = SndSys_Write (&snd_renderbuffer->ring[startoffset * factor], limit); - if (written < 0) - return; - snd_renderbuffer->startframe += written; - expected_delay += written; - - if ((snd_pcm_uframes_t)written != limit) + if (written < 0 || (snd_pcm_uframes_t)written != limit) return; nbframes -= limit; @@ -339,9 +340,6 @@ void SndSys_Submit (void) written = SndSys_Write (&snd_renderbuffer->ring[startoffset * factor], nbframes); if (written < 0) return; - - snd_renderbuffer->startframe += written; - expected_delay += written; }