Rename several methods in PortAudioIO class
return ErrorCode's and handle them where necessary
This commit is contained in:
parent
82f84d6203
commit
8c2b9dac59
@ -458,10 +458,10 @@ PortAudioBackend::_start (bool for_latency_measurement)
|
||||
|
||||
PortAudioIO::ErrorCode err;
|
||||
|
||||
err = _pcmio->pcm_setup(name_to_id(_input_audio_device),
|
||||
name_to_id(_output_audio_device),
|
||||
_samplerate,
|
||||
_samples_per_period);
|
||||
err = _pcmio->open_blocking_stream(name_to_id(_input_audio_device),
|
||||
name_to_id(_output_audio_device),
|
||||
_samplerate,
|
||||
_samples_per_period);
|
||||
|
||||
switch (err) {
|
||||
case PortAudioIO::NoError:
|
||||
@ -558,7 +558,7 @@ PortAudioBackend::_start (bool for_latency_measurement)
|
||||
|
||||
if (timeout == 0 || !_active) {
|
||||
DEBUG_AUDIO("Failed to start main audio thread\n");
|
||||
_pcmio->pcm_stop();
|
||||
_pcmio->close_stream();
|
||||
_run = false;
|
||||
unregister_ports();
|
||||
_active = false;
|
||||
@ -1387,8 +1387,8 @@ PortAudioBackend::main_process_thread ()
|
||||
manager.registration_callback();
|
||||
manager.graph_order_callback();
|
||||
|
||||
if (_pcmio->pcm_start()) {
|
||||
_pcmio->pcm_stop ();
|
||||
if (_pcmio->start_stream() != PortAudioIO::NoError) {
|
||||
_pcmio->close_stream ();
|
||||
_active = false;
|
||||
engine.halted_callback(get_error_string(AudioDeviceIOError).c_str());
|
||||
}
|
||||
@ -1496,7 +1496,7 @@ PortAudioBackend::main_process_thread ()
|
||||
|
||||
/* call engine process callback */
|
||||
if (engine.process_callback (_samples_per_period)) {
|
||||
_pcmio->pcm_stop ();
|
||||
_pcmio->close_stream ();
|
||||
_active = false;
|
||||
return 0;
|
||||
}
|
||||
@ -1559,7 +1559,7 @@ PortAudioBackend::main_process_thread ()
|
||||
// TODO clear midi or stop midi recv when entering fwheelin'
|
||||
|
||||
if (engine.process_callback (_samples_per_period)) {
|
||||
_pcmio->pcm_stop ();
|
||||
_pcmio->close_stream();
|
||||
_active = false;
|
||||
return 0;
|
||||
}
|
||||
@ -1604,7 +1604,7 @@ PortAudioBackend::main_process_thread ()
|
||||
}
|
||||
|
||||
}
|
||||
_pcmio->pcm_stop ();
|
||||
_pcmio->close_stream();
|
||||
_active = false;
|
||||
if (_run) {
|
||||
engine.halted_callback(get_error_string(AudioDeviceIOError).c_str());
|
||||
|
@ -56,7 +56,7 @@ PortAudioIO::PortAudioIO ()
|
||||
|
||||
PortAudioIO::~PortAudioIO ()
|
||||
{
|
||||
pcm_stop();
|
||||
close_stream();
|
||||
|
||||
pa_deinitialize ();
|
||||
clear_device_lists ();
|
||||
@ -548,11 +548,15 @@ PortAudioIO::reset_stream_dependents ()
|
||||
_cur_output_latency = 0;
|
||||
}
|
||||
|
||||
void
|
||||
PortAudioIO::pcm_stop ()
|
||||
PortAudioIO::ErrorCode
|
||||
PortAudioIO::close_stream()
|
||||
{
|
||||
if (_stream) {
|
||||
Pa_CloseStream (_stream);
|
||||
if (!_stream) return NoError;
|
||||
|
||||
PaError err = Pa_CloseStream (_stream);
|
||||
|
||||
if (err != paNoError) {
|
||||
return StreamCloseError;
|
||||
}
|
||||
_stream = NULL;
|
||||
|
||||
@ -560,17 +564,18 @@ PortAudioIO::pcm_stop ()
|
||||
|
||||
free (_input_buffer); _input_buffer = NULL;
|
||||
free (_output_buffer); _output_buffer = NULL;
|
||||
return NoError;
|
||||
}
|
||||
|
||||
int
|
||||
PortAudioIO::pcm_start()
|
||||
PortAudioIO::ErrorCode
|
||||
PortAudioIO::start_stream()
|
||||
{
|
||||
PaError err = Pa_StartStream (_stream);
|
||||
|
||||
if (err != paNoError) {
|
||||
return -1;
|
||||
return StreamStartError;
|
||||
}
|
||||
return 0;
|
||||
return NoError;
|
||||
}
|
||||
|
||||
bool
|
||||
@ -730,10 +735,10 @@ PortAudioIO::pre_stream_open(int device_input,
|
||||
}
|
||||
|
||||
PortAudioIO::ErrorCode
|
||||
PortAudioIO::pcm_setup(int device_input,
|
||||
int device_output,
|
||||
double sample_rate,
|
||||
uint32_t samples_per_period)
|
||||
PortAudioIO::open_blocking_stream(int device_input,
|
||||
int device_output,
|
||||
double sample_rate,
|
||||
uint32_t samples_per_period)
|
||||
{
|
||||
PaStreamParameters inputParam;
|
||||
PaStreamParameters outputParam;
|
||||
@ -761,12 +766,12 @@ PortAudioIO::pcm_setup(int device_input,
|
||||
|
||||
if (!set_sample_rate_and_latency_from_stream()) {
|
||||
DEBUG_AUDIO ("PortAudio failed to query stream information.\n");
|
||||
pcm_stop();
|
||||
close_stream();
|
||||
return StreamOpenError;
|
||||
}
|
||||
|
||||
if (!allocate_buffers_for_blocking_api(samples_per_period)) {
|
||||
pcm_stop();
|
||||
close_stream();
|
||||
return StreamOpenError;
|
||||
}
|
||||
return NoError;
|
||||
|
@ -83,13 +83,13 @@ public:
|
||||
std::string control_app_name (int device_id) const;
|
||||
void launch_control_app (int device_id);
|
||||
|
||||
void pcm_stop (void);
|
||||
int pcm_start (void);
|
||||
ErrorCode open_blocking_stream(int device_input,
|
||||
int device_output,
|
||||
double sample_rate,
|
||||
uint32_t samples_per_period);
|
||||
ErrorCode start_stream(void);
|
||||
|
||||
ErrorCode pcm_setup(int device_input,
|
||||
int device_output,
|
||||
double sample_rate,
|
||||
uint32_t samples_per_period);
|
||||
ErrorCode close_stream(void);
|
||||
|
||||
uint32_t n_playback_channels (void) const { return _playback_channels; }
|
||||
uint32_t n_capture_channels (void) const { return _capture_channels; }
|
||||
|
Loading…
Reference in New Issue
Block a user