X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=snd_alsa.c;h=173a9f52bb43ffb41308b2ac19515f07e9aa9eba;hb=f49029f53c54840c95c108047328428c9204f62c;hp=c9065bd83fc1eb8f6de4f820153138153ca3b88a;hpb=5a62228b228e2a329d2ba7fef9dacd12de4d9033;p=xonotic%2Fdarkplaces.git diff --git a/snd_alsa.c b/snd_alsa.c index c9065bd8..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; @@ -265,8 +266,6 @@ static qboolean SndSys_Recover (int err_num) return false; } - - Con_DPrint ("SndSys_Recover: recovered successfully\n"); return true; } @@ -284,17 +283,23 @@ static snd_pcm_sframes_t SndSys_Write (const unsigned char* buffer, unsigned int written = snd_pcm_writei (pcm_handle, buffer, nbframes); if (written < 0) { - Con_Printf ("SndSys_Write: audio write returned %ld (%s)!\n", - written, snd_strerror (written)); + if (developer.integer >= 100) + Con_Printf ("SndSys_Write: audio write returned %ld (%s)!\n", + written, snd_strerror (written)); if (SndSys_Recover (written)) { written = snd_pcm_writei (pcm_handle, buffer, nbframes); if (written < 0) - Con_Printf ("SndSys_Write: audio write failed again (error %ld: %s)!\n", - written, snd_strerror (written)); + Con_DPrintf ("SndSys_Write: audio write failed again (error %ld: %s)!\n", + written, snd_strerror (written)); } } + if (written > 0) + { + snd_renderbuffer->startframe += written; + expected_delay += written; + } return written; } @@ -321,34 +326,20 @@ void SndSys_Submit (void) factor = snd_renderbuffer->format.width * snd_renderbuffer->format.channels; limit = snd_renderbuffer->maxframes - startoffset; nbframes = snd_renderbuffer->endframe - snd_renderbuffer->startframe; -//Con_DPrintf(">> SndSys_Submit: startframe=%u, endframe=%u (%u frames), maxframes=%u, startoffset=%u\n", -// snd_renderbuffer->startframe, snd_renderbuffer->endframe, -// nbframes, snd_renderbuffer->maxframes, startoffset); if (nbframes > limit) { -//Con_DPrintf(">> SndSys_Submit: 2 phases-submit\n"); written = SndSys_Write (&snd_renderbuffer->ring[startoffset * factor], limit); - if (written < 0) - return; - snd_renderbuffer->startframe += written; - expected_delay += written; - -//Con_DPrintf(">> SndSys_Submit: %ld/%ld frames written\n", written, limit); - if ((snd_pcm_uframes_t)written != limit) + if (written < 0 || (snd_pcm_uframes_t)written != limit) return; nbframes -= limit; startoffset = 0; } -//else Con_DPrintf(">> SndSys_Submit: 1 phase-submit\n"); written = SndSys_Write (&snd_renderbuffer->ring[startoffset * factor], nbframes); if (written < 0) return; -//Con_DPrintf(">> SndSys_Submit: %ld/%ld frames written\n", written, nbframes); - snd_renderbuffer->startframe += written; - expected_delay += written; } @@ -370,8 +361,9 @@ unsigned int SndSys_GetSoundTime (void) err = snd_pcm_delay (pcm_handle, &delay); if (err != 0) { - Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay (%s)\n", - snd_strerror (err)); + if (developer.integer >= 100) + Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay (%s)\n", + snd_strerror (err)); if (! SndSys_Recover (err)) return 0; @@ -385,12 +377,10 @@ unsigned int SndSys_GetSoundTime (void) } } -//Con_DPrintf(">> SndSys_GetSoundTime: expected_delay=%ld, delay=%ld\n", -// expected_delay, delay); if (expected_delay < delay) { - Con_Printf ("SndSys_GetSoundTime: expected_delay(%ld) < delay(%ld)\n", - expected_delay, delay); + Con_DPrintf ("SndSys_GetSoundTime: expected_delay(%ld) < delay(%ld)\n", + expected_delay, delay); timediff = 0; } else