From 00ae500d59e75a257ecb0a27c13f60c7e86226a7 Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Wed, 10 May 2017 18:32:53 +0000 Subject: [PATCH] Add experimental name support to configmidi for coremidi Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4016 --- src/gui/midi_coremidi.h | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) 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);