X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Faudioalsa.C;h=7a8d712c3b8f2687280dd33a9bccfa0925872c12;hp=ee5b65303fbb9a4e1e68013a933d444d7a9695d9;hb=a19a685a46ddc630010788707d9e5b9d2342af46;hpb=f804c9168ba1e5ab71de35ccdd26fc0ef8fed7c9 diff --git a/cinelerra-5.1/cinelerra/audioalsa.C b/cinelerra-5.1/cinelerra/audioalsa.C index ee5b6530..7a8d712c 100644 --- a/cinelerra-5.1/cinelerra/audioalsa.C +++ b/cinelerra-5.1/cinelerra/audioalsa.C @@ -22,6 +22,7 @@ #include "audiodevice.h" #include "audioalsa.h" #include "bcsignals.h" +#include "language.h" #include "mutex.h" #include "playbackconfig.h" #include "preferences.h" @@ -156,6 +157,7 @@ void AudioALSA::list_devices(ArrayList *devices, int pcm_title, int mode) snd_ctl_close(handle); } +#ifdef HAVE_PACTL // attempt to add pulseaudio "monitor" devices // run: pactl list | // scan output for #n, Name: @@ -211,6 +213,7 @@ void AudioALSA::list_devices(ArrayList *devices, int pcm_title, int mode) } pclose(pactl); } +#endif } void AudioALSA::translate_name(char *output, char *input, int mode) @@ -271,7 +274,8 @@ int AudioALSA::set_params(snd_pcm_t *dsp, int mode, err = snd_pcm_hw_params_any(dsp, params); if (err < 0) { - fprintf(stderr, "AudioALSA::set_params: no PCM configurations available\n"); + fprintf(stderr, "AudioALSA::set_params: "); + fprintf(stderr, _("no PCM configurations available\n")); return 1; } @@ -279,8 +283,8 @@ int AudioALSA::set_params(snd_pcm_t *dsp, int mode, params, SND_PCM_ACCESS_RW_INTERLEAVED); if(err) { - fprintf(stderr, "AudioALSA::set_params: failed to set up " - "interleaved device access.\n"); + fprintf(stderr, "AudioALSA::set_params: "); + fprintf(stderr, _("failed to set up interleaved device access.\n")); return 1; } @@ -288,7 +292,8 @@ int AudioALSA::set_params(snd_pcm_t *dsp, int mode, params, translate_format(bits)); if(err) { - fprintf(stderr, "AudioALSA::set_params: failed to set output format.\n"); + fprintf(stderr, "AudioALSA::set_params: "); + fprintf(stderr, _("failed to set output format.\n")); return 1; } @@ -296,8 +301,8 @@ int AudioALSA::set_params(snd_pcm_t *dsp, int mode, params, channels); if(err) { - fprintf(stderr, "AudioALSA::set_params: Configured ALSA device " - "does not support %d channel operation.\n", + fprintf(stderr, "AudioALSA::set_params: "); + fprintf(stderr, _("Configured ALSA device does not support %d channel operation.\n"), channels); return 1; } @@ -307,8 +312,8 @@ int AudioALSA::set_params(snd_pcm_t *dsp, int mode, (unsigned int*)&samplerate, (int*)0); if(err) { - fprintf(stderr, "AudioALSA::set_params: Configured ALSA device " - "does not support %u Hz playback.\n", + fprintf(stderr, "AudioALSA::set_params: "); + fprintf(stderr, _(" Configured ALSA device does not support %u Hz playback.\n"), (unsigned int)samplerate); return 1; } @@ -562,8 +567,8 @@ int AudioALSA::write_buffer(char *buffer, int size) timer->update(); AudioThread *audio_out = device->audio_out; - while(attempts < 2 && !done && !device->playback_interrupted) - { + while( count > 0 && attempts < 2 && !done ) { + if( device->playback_interrupted ) break; // Buffers written must be equal to period_time audio_out->Thread::enable_cancel(); int ret = snd_pcm_avail_update(get_output()); @@ -581,6 +586,7 @@ int AudioALSA::write_buffer(char *buffer, int size) if( ret > 0 ) ret = 0; } audio_out->Thread::disable_cancel(); + if( device->playback_interrupted ) break; if( ret == 0 ) continue; if( ret > 0 ) {