Add experimental name support to configmidi for coremidi
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4016
This commit is contained in:
parent
f5c26251c7
commit
00ae500d59
1 changed files with 30 additions and 5 deletions
|
@ -15,6 +15,8 @@
|
|||
*/
|
||||
|
||||
#include <CoreMIDI/MIDIServices.h>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
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; i++) {
|
||||
MIDIEndpointRef dummy = MIDIGetDestination(i);
|
||||
if (!dummy) continue;
|
||||
CFStringRef midiname = 0;
|
||||
if (MIDIObjectGetStringProperty(dummy,kMIDIPropertyDisplayName,&midiname) == noErr) {
|
||||
const char* s = CFStringGetCStringPtr(midiname,kCFStringEncodingMacRoman);
|
||||
if (s) {
|
||||
std::string devname(s);
|
||||
lowcase(devname);
|
||||
if (devname.find(strconf) != std::string::npos) {
|
||||
destId = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (destId >= 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);
|
||||
|
|
Loading…
Add table
Reference in a new issue