MacVST Program/Preset support
This commit is contained in:
parent
35de5080a6
commit
a610157955
@ -51,9 +51,11 @@ private:
|
|||||||
int get_XID ();
|
int get_XID ();
|
||||||
bool idle ();
|
bool idle ();
|
||||||
void lower_box_realized ();
|
void lower_box_realized ();
|
||||||
|
void set_program ();
|
||||||
NSWindow* get_nswindow();
|
NSWindow* get_nswindow();
|
||||||
|
|
||||||
Gtk::EventBox low_box;
|
Gtk::EventBox low_box;
|
||||||
NSView* _ns_view;
|
NSView* _ns_view;
|
||||||
sigc::connection _idle_connection;
|
sigc::connection _idle_connection;
|
||||||
|
PBD::ScopedConnection _program_connection;
|
||||||
};
|
};
|
||||||
|
@ -56,6 +56,8 @@ MacVSTPluginUI::MacVSTPluginUI (boost::shared_ptr<PluginInsert> pi, boost::share
|
|||||||
low_box.signal_realize().connect (mem_fun (this, &MacVSTPluginUI::lower_box_realized));
|
low_box.signal_realize().connect (mem_fun (this, &MacVSTPluginUI::lower_box_realized));
|
||||||
pack_start (low_box, true, true);
|
pack_start (low_box, true, true);
|
||||||
low_box.show ();
|
low_box.show ();
|
||||||
|
vst->LoadPresetProgram.connect (_program_connection, invalidator (*this), boost::bind (&MacVSTPluginUI::set_program, this), gui_context());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MacVSTPluginUI::~MacVSTPluginUI ()
|
MacVSTPluginUI::~MacVSTPluginUI ()
|
||||||
@ -149,3 +151,30 @@ MacVSTPluginUI::idle ()
|
|||||||
_vst->state()->wantIdle = plugin->dispatcher (plugin, effEditIdle, 0, 0, NULL, 0);
|
_vst->state()->wantIdle = plugin->dispatcher (plugin, effEditIdle, 0, 0, NULL, 0);
|
||||||
return true; // _vst->state()->wantIdle;
|
return true; // _vst->state()->wantIdle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MacVSTPluginUI::set_program ()
|
||||||
|
{
|
||||||
|
VSTState* vstfx = _vst->state();
|
||||||
|
|
||||||
|
if (vstfx->want_program != -1) {
|
||||||
|
if (vstfx->vst_version >= 2) {
|
||||||
|
vstfx->plugin->dispatcher (vstfx->plugin, 67 /* effBeginSetProgram */, 0, 0, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
vstfx->plugin->dispatcher (vstfx->plugin, effSetProgram, 0, vstfx->want_program, NULL, 0);
|
||||||
|
|
||||||
|
if (vstfx->vst_version >= 2) {
|
||||||
|
vstfx->plugin->dispatcher (vstfx->plugin, 68 /* effEndSetProgram */, 0, 0, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
vstfx->want_program = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vstfx->want_chunk == 1) {
|
||||||
|
pthread_mutex_lock (&vstfx->state_lock);
|
||||||
|
vstfx->plugin->dispatcher (vstfx->plugin, 24 /* effSetChunk */, 1, vstfx->wanted_chunk_size, vstfx->wanted_chunk, 0);
|
||||||
|
vstfx->want_chunk = 0;
|
||||||
|
pthread_mutex_unlock (&vstfx->state_lock);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user