diff --git a/libs/backends/wavesaudio/waves_midi_device.cc b/libs/backends/wavesaudio/waves_midi_device.cc index 5ca9e267a4..81e8f1259d 100644 --- a/libs/backends/wavesaudio/waves_midi_device.cc +++ b/libs/backends/wavesaudio/waves_midi_device.cc @@ -114,7 +114,7 @@ WavesMidiDevice::open (PmTimeProcPtr time_proc, void* time_info) if (is_output () ) { std::cout << "WavesMidiDevice::open (): OUTPUT" << _pm_output_id << "-[" << name () << "]!" << std::endl; - if (_output_queue) { + if (!_output_queue) { _output_queue = Pm_QueueCreate (QUEUE_LENGTH, sizeof (const WavesMidiEvent*)); if (NULL == _output_queue) { std::cerr << "WavesMidiDevice::open (): _output_queue = Pm_QueueCreate () failed for " << _pm_output_id << "-[" << name () << "]!" << std::endl; @@ -147,48 +147,49 @@ WavesMidiDevice::open (PmTimeProcPtr time_proc, void* time_info) void WavesMidiDevice::close () { - DEBUG_TRACE (DEBUG::WavesMIDI, string_compose ("WavesMidiDevice::close (): %1\n", name ())); - WavesMidiEvent *waves_midi_event; - - if (_input_queue) { - while (1 == Pm_Dequeue (_input_queue, &waves_midi_event)) { - delete waves_midi_event; // XXX possible dup free in ~WavesMidiBuffer() (?) - } - - Pm_QueueDestroy (_input_queue); - _input_queue = NULL; - _input_pm_stream = NULL; - _pm_input_id = pmNoDevice; - } - - if (_input_pm_stream) { - PmError err = Pm_Close (_input_pm_stream); - - if (err != pmNoError) { - std::cerr << "WavesMidiDevice::close (): Pm_Close () failed for " << _pm_input_id << "-[" << name () << "]!" << std::endl; - std::cerr << "Error: " << err << std::endl; + DEBUG_TRACE (DEBUG::WavesMIDI, string_compose ("WavesMidiDevice::close (): %1\n", name ())); + WavesMidiEvent *waves_midi_event; + + if (_input_pm_stream) { + PmError err = Pm_Close (_input_pm_stream); + + if (err != pmNoError) { + std::cerr << "WavesMidiDevice::close (): Pm_Close () failed for " << _pm_input_id << "-[" << name () << "]!" << std::endl; + std::cerr << "Error: " << err << std::endl; + } else { + _input_pm_stream = NULL; + + if (_input_queue) { + while (1 == Pm_Dequeue (_input_queue, &waves_midi_event)) { + delete waves_midi_event; // XXX possible dup free in ~WavesMidiBuffer() (?) } + + Pm_QueueDestroy (_input_queue); + _input_queue = NULL; + _pm_input_id = pmNoDevice; + } } - - if (_output_queue) { - while (1 == Pm_Dequeue (_output_queue, &waves_midi_event)) { - delete waves_midi_event; // XXX possible dup free in ~WavesMidiBuffer() (?) - } - - Pm_QueueDestroy (_output_queue); - _output_queue = NULL; - _output_pm_stream = NULL; - _pm_output_id = pmNoDevice; - } - - if ( _output_pm_stream ) { - PmError err = Pm_Close (_output_pm_stream); - - if (err != pmNoError) { - std::cerr << "WavesMidiDevice::close (): Pm_Close () failed for " << _pm_output_id << "-[" << name () << "]!" << std::endl; - std::cerr << "Error: " << err << std::endl; + } + + if ( _output_pm_stream ) { + PmError err = Pm_Close (_output_pm_stream); + + if (err != pmNoError) { + std::cerr << "WavesMidiDevice::close (): Pm_Close () failed for " << _pm_output_id << "-[" << name () << "]!" << std::endl; + std::cerr << "Error: " << err << std::endl; + } else { + _output_pm_stream = NULL; + if (_output_queue) { + while (1 == Pm_Dequeue (_output_queue, &waves_midi_event)) { + delete waves_midi_event; // XXX possible dup free in ~WavesMidiBuffer() (?) } + + Pm_QueueDestroy (_output_queue); + _output_queue = NULL; + _pm_output_id = pmNoDevice; + } } + } } void diff --git a/libs/backends/wavesaudio/waves_midi_device_manager.cc b/libs/backends/wavesaudio/waves_midi_device_manager.cc index ff3404ba72..b852a2b9b3 100644 --- a/libs/backends/wavesaudio/waves_midi_device_manager.cc +++ b/libs/backends/wavesaudio/waves_midi_device_manager.cc @@ -208,10 +208,9 @@ WavesMidiDeviceManager::_create_devices () { device = new WavesMidiDevice (pm_device_info->name); _devices.push_back (device); - } - - if (device->open (__get_time_ms, (void*)&_audiobackend)) { - std::cerr << "WavesMidiDeviceManager::_create_devices (): [" << device->name () << "]->open () failed!" << std::endl; + if (device->open (__get_time_ms, (void*)&_audiobackend)) { + std::cerr << "WavesMidiDeviceManager::_create_devices (): [" << device->name () << "]->open () failed!" << std::endl; + } } } @@ -235,7 +234,7 @@ WavesMidiDeviceManager::_delete_devices () void WavesMidiDeviceManager::_close_devices () { - // COMMENTED DBG LOGS */ std::cout << "WavesMidiDeviceManager::_delete_devices ():" << std::endl; + // COMMENTED DBG LOGS */ std::cout << "WavesMidiDeviceManager::_close_devices ():" << std::endl; for (size_t i = 0; i < _devices.size (); i++) { _devices[i]->close (); }