zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit c5c9dfe90dda2352a8425959095a1deed8533af7
parent 30eb0ca64c7f277899fcc663571ea8288548687a
Author: fundamental <[email protected]>
Date:   Tue, 12 May 2015 18:08:35 -0400

Middleware: Permit External Master Changes

Patch By FalkTX

Diffstat:
Msrc/Misc/MiddleWare.cpp | 26++++++++++++++++----------
Msrc/Misc/MiddleWare.h | 2++
2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/src/Misc/MiddleWare.cpp b/src/Misc/MiddleWare.cpp @@ -682,10 +682,7 @@ public: } //Update resource locator table - obj_store.clear(); - obj_store.extractMaster(m); - for(int i=0; i<NUM_MIDI_PARTS; ++i) - kits.extractPart(m->part[i], i); + updateResources(m); master = m; @@ -694,6 +691,14 @@ public: uToB->write("/load-master", "b", sizeof(Master*), &m); } + void updateResources(Master *m) + { + obj_store.clear(); + obj_store.extractMaster(m); + for(int i=0; i<NUM_MIDI_PARTS; ++i) + kits.extractPart(m->part[i], i); + } + //If currently broadcasting messages bool broadcast = false; //If accepting undo events as user driven @@ -839,8 +844,10 @@ MiddleWareImpl::MiddleWareImpl(MiddleWare *mw, SYNTH_T synth_, int prefered_port lo_server_add_method(server, NULL, NULL, handler_function, mw); fprintf(stderr, "lo server running on %d\n", lo_server_get_port(server)); +#ifndef CARLA_VERSION_STRING clean_up_tmp_nams(); create_tmp_file((unsigned)lo_server_get_port(server)); +#endif //dummy callback for starters cb = [](void*, const char*){}; @@ -853,12 +860,7 @@ MiddleWareImpl::MiddleWareImpl(MiddleWare *mw, SYNTH_T synth_, int prefered_port osc = GUI::genOscInterface(mw); //Grab objects of interest from master - obj_store.extractMaster(master); - - //Load Part Status - for(int i=0; i < NUM_MIDI_PARTS; ++i) { - kits.extractPart(master->part[i], i); - } + updateResources(master); //Null out Load IDs for(int i=0; i < NUM_MIDI_PARTS; ++i) { @@ -1246,6 +1248,10 @@ MiddleWare::~MiddleWare(void) { delete impl; } +void MiddleWare::updateResources(Master *m) +{ + impl->updateResources(m); +} Master *MiddleWare::spawnMaster(void) { return impl->master; diff --git a/src/Misc/MiddleWare.h b/src/Misc/MiddleWare.h @@ -4,12 +4,14 @@ #include <string> struct SYNTH_T; +class Master; //Link between realtime and non-realtime layers class MiddleWare { public: MiddleWare(SYNTH_T synth, int prefered_port = -1); ~MiddleWare(void); + void updateResources(Master *m); //returns internal master pointer class Master *spawnMaster(void); //return UI interface