diff options
author | Stephane Letz <letz@grame.fr> | 2014-07-03 16:48:09 +0200 |
---|---|---|
committer | Stephane Letz <letz@grame.fr> | 2014-07-03 16:48:09 +0200 |
commit | a48fea3c01f703bef626f5b3ce46abcc7bf4e2e3 (patch) | |
tree | 30078fa70d0d6f80eef95a024e07e202acc92915 /linux | |
parent | e24717e3ed4e706f19cc8ad699c2928cc942b14f (diff) | |
download | jack2-a48fea3c01f703bef626f5b3ce46abcc7bf4e2e3.tar.gz |
Correct JackWinMMEDriver and JackALSARawMidiDriver creation.
Diffstat (limited to 'linux')
-rw-r--r-- | linux/alsarawmidi/JackALSARawMidiDriver.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/linux/alsarawmidi/JackALSARawMidiDriver.cpp b/linux/alsarawmidi/JackALSARawMidiDriver.cpp index aaa56cf5..5e4e61df 100644 --- a/linux/alsarawmidi/JackALSARawMidiDriver.cpp +++ b/linux/alsarawmidi/JackALSARawMidiDriver.cpp @@ -624,6 +624,9 @@ JackALSARawMidiDriver::Write() #ifdef __cplusplus extern "C" { #endif + + // singleton kind of driver + static Jack::JackALSARawMidiDriver* driver = NULL; SERVER_EXPORT jack_driver_desc_t * driver_get_descriptor() @@ -639,14 +642,19 @@ extern "C" { driver_initialize(Jack::JackLockedEngine *engine, Jack::JackSynchro *table, const JSList *params) { - Jack::JackDriverClientInterface *driver = - new Jack::JackALSARawMidiDriver("system_midi", "alsarawmidi", - engine, table); - if (driver->Open(0, 0, 1, 1, 0, 0, false, "midi in", "midi out", 0, 0)) { - delete driver; - driver = 0; + // singleton kind of driver + if (!driver) { + driver = new Jack::JackALSARawMidiDriver("system_midi", "alsarawmidi", engine, table); + if (driver->Open(1, 1, 0, 0, false, "midi in", "midi out", 0, 0) == 0) { + return driver; + } else { + delete driver; + return NULL; + } + } else { + jack_info("JackALSARawMidiDriver already allocated, cannot be loaded twice"); + return NULL; } - return driver; } #ifdef __cplusplus |