X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=snd_alsa.c;h=3f9534ae21f3cbf61a3d7ad95cb7f3662f752cb7;hb=94adef9176f6ea2f948d9fdcc51288d07e502e2e;hp=a1d0c26241017091478e190c78ce93aa75c45cea;hpb=59d1e032103c4af43759dc4f1b9eaccab7aed1bd;p=xonotic%2Fdarkplaces.git diff --git a/snd_alsa.c b/snd_alsa.c index a1d0c262..3f9534ae 100644 --- a/snd_alsa.c +++ b/snd_alsa.c @@ -23,10 +23,10 @@ // ALSA module, used by Linux +#include "quakedef.h" #include -#include "quakedef.h" #include "snd_main.h" @@ -63,7 +63,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) if (suggested != NULL) { - memcpy (suggested, requested, sizeof (suggested)); + memcpy (suggested, requested, sizeof (*suggested)); if (requested->width < 1) suggested->width = 1; @@ -73,16 +73,16 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) Con_Printf ("SndSys_Init: suggesting sound width = %hu\n", suggested->width); } - + return false; } - + if (pcm_handle != NULL) { Con_Print ("SndSys_Init: WARNING: Init called before Shutdown!\n"); SndSys_Shutdown (); } - + // Determine the name of the PCM handle we'll use switch (requested->channels) { @@ -105,25 +105,25 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) pcm_name = com_argv[i + 1]; // Open the audio device - Con_DPrintf ("SndSys_Init: PCM device is \"%s\"\n", pcm_name); + Con_Printf ("SndSys_Init: PCM device is \"%s\"\n", pcm_name); err = snd_pcm_open (&pcm_handle, pcm_name, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK); - if (err != 0) + if (err < 0) { Con_Printf ("SndSys_Init: can't open audio device \"%s\" (%s)\n", pcm_name, snd_strerror (err)); return false; } - + // Allocate the hardware parameters err = snd_pcm_hw_params_malloc (&hw_params); - if (err != 0) + if (err < 0) { Con_Printf ("SndSys_Init: can't allocate hardware parameters (%s)\n", snd_strerror (err)); goto init_error; } err = snd_pcm_hw_params_any (pcm_handle, hw_params); - if (err != 0) + if (err < 0) { Con_Printf ("SndSys_Init: can't initialize hardware parameters (%s)\n", snd_strerror (err)); @@ -132,7 +132,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) // Set the access type err = snd_pcm_hw_params_set_access (pcm_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED); - if (err != 0) + if (err < 0) { Con_Printf ("SndSys_Init: can't set access type (%s)\n", snd_strerror (err)); @@ -145,7 +145,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) else snd_pcm_format = SND_PCM_FORMAT_S16; err = snd_pcm_hw_params_set_format (pcm_handle, hw_params, snd_pcm_format); - if (err != 0) + if (err < 0) { Con_Printf ("SndSys_Init: can't set sound width to %hu (%s)\n", requested->width, snd_strerror (err)); @@ -154,7 +154,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) // Set the sound channels err = snd_pcm_hw_params_set_channels (pcm_handle, hw_params, requested->channels); - if (err != 0) + if (err < 0) { Con_Printf ("SndSys_Init: can't set sound channels to %hu (%s)\n", requested->channels, snd_strerror (err)); @@ -163,7 +163,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) // Set the sound speed err = snd_pcm_hw_params_set_rate (pcm_handle, hw_params, requested->speed, 0); - if (err != 0) + if (err < 0) { Con_Printf ("SndSys_Init: can't set sound speed to %u (%s)\n", requested->speed, snd_strerror (err)); @@ -172,7 +172,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) buffer_size = requested->speed / 5; err = snd_pcm_hw_params_set_buffer_size_near (pcm_handle, hw_params, &buffer_size); - if (err != 0) + if (err < 0) { Con_Printf ("SndSys_Init: can't set sound buffer size to %lu (%s)\n", buffer_size, snd_strerror (err)); @@ -181,7 +181,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) buffer_size /= NB_PERIODS; err = snd_pcm_hw_params_set_period_size_near(pcm_handle, hw_params, &buffer_size, 0); - if (err != 0) + if (err < 0) { Con_Printf ("SndSys_Init: can't set sound period size to %lu (%s)\n", buffer_size, snd_strerror (err)); @@ -189,7 +189,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) } err = snd_pcm_hw_params (pcm_handle, hw_params); - if (err != 0) + if (err < 0) { Con_Printf ("SndSys_Init: can't set hardware parameters (%s)\n", snd_strerror (err)); @@ -203,13 +203,13 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) alsasoundtime = 0; if (snd_channellayout.integer == SND_CHANNELLAYOUT_AUTO) Cvar_SetValueQuick (&snd_channellayout, SND_CHANNELLAYOUT_ALSA); - + return true; // It's not very clean, but it avoids a lot of duplicated code. init_error: - + if (hw_params != NULL) snd_pcm_hw_params_free (hw_params); SndSys_Shutdown (); @@ -255,11 +255,11 @@ static qboolean SndSys_Recover (int err_num) // We can only do something on underrun ("broken pipe") errors if (err_num != -EPIPE) return false; - + err = snd_pcm_prepare (pcm_handle); - if (err != 0) + if (err < 0) { - Con_DPrintf ("SndSys_Recover: unable to recover (%s)\n", + Con_Printf ("SndSys_Recover: unable to recover (%s)\n", snd_strerror (err)); // TOCHECK: should we stop the playback ? @@ -300,7 +300,7 @@ static snd_pcm_sframes_t SndSys_Write (const unsigned char* buffer, unsigned int snd_renderbuffer->startframe += written; expected_delay += written; } - + return written; } @@ -317,7 +317,7 @@ void SndSys_Submit (void) unsigned int startoffset, factor; snd_pcm_uframes_t limit, nbframes; snd_pcm_sframes_t written; - + if (pcm_handle == NULL || snd_renderbuffer->startframe == snd_renderbuffer->endframe) return; @@ -332,7 +332,7 @@ void SndSys_Submit (void) written = SndSys_Write (&snd_renderbuffer->ring[startoffset * factor], limit); if (written < 0 || (snd_pcm_uframes_t)written != limit) return; - + nbframes -= limit; startoffset = 0; } @@ -359,7 +359,7 @@ unsigned int SndSys_GetSoundTime (void) return 0; err = snd_pcm_delay (pcm_handle, &delay); - if (err != 0) + if (err < 0) { if (developer.integer >= 1000 && vid_activewindow) Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay (%s)\n", @@ -369,7 +369,7 @@ unsigned int SndSys_GetSoundTime (void) return 0; err = snd_pcm_delay (pcm_handle, &delay); - if (err != 0) + if (err < 0) { Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay, again (%s)\n", snd_strerror (err)); @@ -386,9 +386,9 @@ unsigned int SndSys_GetSoundTime (void) else timediff = expected_delay - delay; expected_delay = delay; - + alsasoundtime += (unsigned int)timediff; - + return alsasoundtime; }