| @@ -40,8 +40,7 @@ json_t *MidiIO::addBaseJson(json_t *rootJ) { | |||||
| void MidiIO::baseFromJson(json_t *rootJ) { | void MidiIO::baseFromJson(json_t *rootJ) { | ||||
| json_t *portNameJ = json_object_get(rootJ, "interfaceName"); | json_t *portNameJ = json_object_get(rootJ, "interfaceName"); | ||||
| if (portNameJ) { | if (portNameJ) { | ||||
| deviceName = json_string_value(portNameJ); | |||||
| openDevice(deviceName); | |||||
| openDevice(json_string_value(portNameJ)); | |||||
| } | } | ||||
| json_t *channelJ = json_object_get(rootJ, "channel"); | json_t *channelJ = json_object_get(rootJ, "channel"); | ||||
| @@ -64,9 +63,10 @@ std::vector<std::string> MidiIO::getDevices() { | |||||
| } | } | ||||
| void MidiIO::openDevice(std::string deviceName) { | void MidiIO::openDevice(std::string deviceName) { | ||||
| MidiInWrapper *mw = midiInMap[deviceName]; | MidiInWrapper *mw = midiInMap[deviceName]; | ||||
| if (id > 0 || deviceName != "") { | |||||
| if (this->id > 0 || this->deviceName != "") { | |||||
| close(); | close(); | ||||
| } | } | ||||
| @@ -135,8 +135,11 @@ bool MidiIO::isPortOpen() { | |||||
| } | } | ||||
| void MidiIO::close() { | void MidiIO::close() { | ||||
| MidiInWrapper * mw = midiInMap[deviceName]; | MidiInWrapper * mw = midiInMap[deviceName]; | ||||
| if (!mw){ | |||||
| if (!mw || id < 0) { | |||||
| fprintf(stderr, "Trying to close already closed device!\n"); | |||||
| return; | return; | ||||
| } | } | ||||
| @@ -148,6 +151,7 @@ void MidiIO::close() { | |||||
| } | } | ||||
| id = -1; | id = -1; | ||||
| deviceName = ""; | |||||
| } | } | ||||