diff --git a/macosx/coremidi/JackCoreMidiDriver.cpp b/macosx/coremidi/JackCoreMidiDriver.cpp index d208f9bc..db9fc065 100644 --- a/macosx/coremidi/JackCoreMidiDriver.cpp +++ b/macosx/coremidi/JackCoreMidiDriver.cpp @@ -481,24 +481,28 @@ JackCoreMidiDriver::CloseAux() return result; } +void +JackCoreMidiDriver::Restart() +{ + JackLock lock(this); + + SaveConnections(); + Stop(); + Detach(); + CloseAux(); + OpenAux(); + Attach(); + Start(); + RestoreConnections(); +} + void JackCoreMidiDriver::HandleNotification(const MIDINotification *message) { switch (message->messageID) { case kMIDIMsgSetupChanged: - Lock(); - { - SaveConnections(); - Stop(); - Detach(); - CloseAux(); - OpenAux(); - Attach(); - Start(); - RestoreConnections(); - } - Unlock(); + Restart(); break; case kMIDIMsgObjectAdded: diff --git a/macosx/coremidi/JackCoreMidiDriver.h b/macosx/coremidi/JackCoreMidiDriver.h index 3d665e8a..5d6f3abc 100644 --- a/macosx/coremidi/JackCoreMidiDriver.h +++ b/macosx/coremidi/JackCoreMidiDriver.h @@ -60,6 +60,8 @@ namespace Jack { bool OpenAux(); int CloseAux(); + void Restart(); + JackThread fThread; /*! Thread to execute the Process function */ public: