diff --git a/src/gui/midi_coremidi.h b/src/gui/midi_coremidi.h index 01f8592a..057d67fb 100644 --- a/src/gui/midi_coremidi.h +++ b/src/gui/midi_coremidi.h @@ -15,6 +15,8 @@ */ #include +#include +#include class MidiHandler_coremidi : public MidiHandler { private: @@ -30,9 +32,32 @@ public: m_endpoint = 0; OSStatus result; Bitu numDests = MIDIGetNumberOfDestinations(); - Bitu destId = 0; - if(conf && conf[0]) destId = atoi(conf); - + Bitu destId = numDests; + if(conf && *conf) { + std::string strconf(conf); + std::istringstream configmidi(strconf); + configmidi >> destId; + if (configmidi.fail() && numDests) { + lowcase(strconf); + for(Bitu i = 0; i= numDests) destId = 0; if (destId < numDests) { m_endpoint = MIDIGetDestination(destId); @@ -104,11 +129,11 @@ public: Bitu numDests = MIDIGetNumberOfDestinations(); for(Bitu i = 0; i < numDests; i++){ MIDIEndpointRef dest = MIDIGetDestination(i); - if(!dest) continue; + if (!dest) continue; CFStringRef midiname = 0; if(MIDIObjectGetStringProperty(dest, kMIDIPropertyDisplayName, &midiname) == noErr) { const char * s = CFStringGetCStringPtr(midiname, kCFStringEncodingMacRoman); - if(s) base->WriteOut("%02d\t%s\n",i,s); + if (s) base->WriteOut("%02d\t%s\n",i,s); } //This is for EndPoints created by us. //MIDIEndpointDispose(dest);