/*
- Copyright (C) 2013 Paul Davis
+ Copyright (C) 2013 Waves Audio Ltd.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "waves_midi_device_manager.h"
#include "waves_audiobackend.h"
-#ifdef __WINDOWS__
+#ifdef PLATFORM_WINDOWS
#include "windows.h"
#include "mmsystem.h"
-#elif __MACOS__
+#elif defined(__APPLE__)
#include <CoreMIDI/MIDIServices.h>
{
// COMMENTED DBG LOGS */ std::cout << "WavesMidiDeviceManager::stop ():" << std::endl;
- if ( _active == false )
+ if ( _active == false ) {
return 0;
+ }
stream (false);
- _close_devices ();
+ _delete_devices ();
_active = false;
if (Pm_Terminate () != pmNoError) {
for (int i = 0; i < count; i++) {
const PmDeviceInfo* pm_device_info = Pm_GetDeviceInfo (i);
-
+ // COMMENTED DBG LOGS */ std::cout << " interf : " << pm_device_info->interf << std::endl;
+ // COMMENTED DBG LOGS */ std::cout << " name : " << pm_device_info->name << std::endl;
+ // COMMENTED DBG LOGS */ std::cout << " input : " << pm_device_info->input << std::endl;
+ // COMMENTED DBG LOGS */ std::cout << " output : " << pm_device_info->output << std::endl;
+ // COMMENTED DBG LOGS */ std::cout << " opened : " << pm_device_info->opened << std::endl;
+#if defined (PLATFORM_WINDOWS)
+ if (strncmp (pm_device_info->name, "Microsoft", strlen ("Microsoft")) == 0) {
+ // COMMENTED DBG LOGS */ std::cout << " skipping anything from Microsoft :" << pm_device_info->name << std::endl;
+ continue;
+ }
+#endif
if (pm_device_info == NULL) {
std::cerr << "WavesMidiDeviceManager::_create_devices (): Pm_GetDeviceInfo (" << i << ") failed!" << std::endl;
continue;
}
WavesMidiDevice *device = _get_device (pm_device_info->name);
- if (device) {
- device->validate ();
- }
- else
- {
+ if (!device) {
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;
+ }
+ }
}
return 0;
while (!_devices.empty ()) {
WavesMidiDevice * device = _devices.back ();
_devices.pop_back ();
+ device->close ();
delete device;
}
return 0;
}
-
-void
-WavesMidiDeviceManager::_close_devices ()
-{
- // COMMENTED DBG LOGS */ std::cout << "WavesMidiDeviceManager::_delete_devices ():" << std::endl;
- for (size_t i = 0; i < _devices.size (); i++) {
- _devices[i]->close ();
- }
-}