summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-02-12 22:44:23 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-02-12 22:44:23 +0000
commit032d2cbf5d3e898bf7e81a6e5f8fec5aad39a890 (patch)
treed6b389038c38105cf62b88870b2f9a5392425726
parentcd9968d47308ae3e8494b5463f2a530c86bdc055 (diff)
fixes for OS X compile of last commit
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@6681 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/ardour/ardour/audio_unit.h6
-rw-r--r--libs/ardour/ardour/insert.h2
-rw-r--r--libs/ardour/ardour/ladspa_plugin.h2
-rw-r--r--libs/ardour/ardour/lv2_plugin.h2
-rw-r--r--libs/ardour/ardour/plugin.h2
-rw-r--r--libs/ardour/ardour/redirect.h2
-rw-r--r--libs/ardour/ardour/vst_plugin.h2
-rw-r--r--libs/ardour/audio_unit.cc7
-rw-r--r--libs/ardour/insert.cc10
-rw-r--r--libs/ardour/vst_plugin.cc3
10 files changed, 25 insertions, 13 deletions
diff --git a/libs/ardour/ardour/audio_unit.h b/libs/ardour/ardour/audio_unit.h
index 8ce6e0f09c..c8e4b4d740 100644
--- a/libs/ardour/ardour/audio_unit.h
+++ b/libs/ardour/ardour/audio_unit.h
@@ -80,7 +80,7 @@ class AUPlugin : public ARDOUR::Plugin
void activate ();
void deactivate ();
void flush ();
- void set_block_size (nframes_t nframes);
+ int set_block_size (nframes_t nframes);
int connect_and_run (vector<Sample*>& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, nframes_t nframes, nframes_t offset);
std::set<uint32_t> automatable() const;
@@ -109,6 +109,10 @@ class AUPlugin : public ARDOUR::Plugin
int32_t configure_io (int32_t in, int32_t out);
bool requires_fixed_size_buffers() const;
+ void set_fixed_size_buffers (bool yn) {
+ _requires_fixed_size_buffers = yn;
+ }
+
boost::shared_ptr<CAAudioUnit> get_au () { return unit; }
boost::shared_ptr<CAComponent> get_comp () const { return comp; }
diff --git a/libs/ardour/ardour/insert.h b/libs/ardour/ardour/insert.h
index 641df01c67..9d103d76a1 100644
--- a/libs/ardour/ardour/insert.h
+++ b/libs/ardour/ardour/insert.h
@@ -117,7 +117,7 @@ class PluginInsert : public Insert
void deactivate ();
void flush ();
- void set_block_size (nframes_t nframes);
+ int set_block_size (nframes_t nframes);
uint32_t output_streams() const;
uint32_t input_streams() const;
diff --git a/libs/ardour/ardour/ladspa_plugin.h b/libs/ardour/ardour/ladspa_plugin.h
index 18314c9ca3..3e6a1e6c26 100644
--- a/libs/ardour/ardour/ladspa_plugin.h
+++ b/libs/ardour/ardour/ladspa_plugin.h
@@ -82,7 +82,7 @@ class LadspaPlugin : public ARDOUR::Plugin
_descriptor->cleanup (_handle);
}
- void set_block_size (nframes_t nframes) {}
+ int set_block_size (nframes_t nframes) {return 0; }
int connect_and_run (std::vector<Sample*>& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, nframes_t nframes, nframes_t offset);
std::string describe_parameter (uint32_t);
diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h
index cc5cfa3070..8e1536bd22 100644
--- a/libs/ardour/ardour/lv2_plugin.h
+++ b/libs/ardour/ardour/lv2_plugin.h
@@ -94,7 +94,7 @@ class LV2Plugin : public ARDOUR::Plugin
_instance = NULL;
}
- void set_block_size (nframes_t nframes) {}
+ int set_block_size (nframes_t nframes) { return 0; }
int connect_and_run (std::vector<Sample*>& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, nframes_t nframes, nframes_t offset);
std::string describe_parameter (uint32_t);
diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h
index f2198b3170..41b1ba6a19 100644
--- a/libs/ardour/ardour/plugin.h
+++ b/libs/ardour/ardour/plugin.h
@@ -114,7 +114,7 @@ class Plugin : public PBD::StatefulDestructible
virtual void activate () = 0;
virtual void deactivate () = 0;
virtual void flush () { deactivate(); activate(); }
- virtual void set_block_size (nframes_t nframes) = 0;
+ virtual int set_block_size (nframes_t nframes) = 0;
virtual int connect_and_run (vector<Sample*>& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, nframes_t nframes, nframes_t offset) = 0;
virtual std::set<uint32_t> automatable() const = 0;
diff --git a/libs/ardour/ardour/redirect.h b/libs/ardour/ardour/redirect.h
index ca8d1d4866..3b7b096b81 100644
--- a/libs/ardour/ardour/redirect.h
+++ b/libs/ardour/ardour/redirect.h
@@ -76,7 +76,7 @@ class Redirect : public IO
virtual void flush () = 0;
virtual nframes_t latency() { return 0; }
- virtual void set_block_size (nframes_t nframes) {}
+ virtual int set_block_size (nframes_t nframes) {return 0; }
virtual bool requires_fixed_size_buffers () const { return false; }
sigc::signal<void,Redirect*,void*> active_changed;
diff --git a/libs/ardour/ardour/vst_plugin.h b/libs/ardour/ardour/vst_plugin.h
index 4240dd0fe5..14e9d73059 100644
--- a/libs/ardour/ardour/vst_plugin.h
+++ b/libs/ardour/ardour/vst_plugin.h
@@ -70,7 +70,7 @@ class VSTPlugin : public ARDOUR::Plugin
uint32_t nth_parameter (uint32_t port, bool& ok) const;
void activate ();
void deactivate ();
- void set_block_size (nframes_t nframes);
+ int set_block_size (nframes_t nframes);
int connect_and_run (vector<Sample*>& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, nframes_t nframes, nframes_t offset);
string describe_parameter (uint32_t);
string state_node_name() const { return "vst"; }
diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc
index 83ae9ffd3d..c3da494d8f 100644
--- a/libs/ardour/audio_unit.cc
+++ b/libs/ardour/audio_unit.cc
@@ -839,7 +839,7 @@ AUPlugin::flush ()
unit->GlobalReset ();
}
-void
+int
AUPlugin::set_block_size (nframes_t nframes)
{
bool was_initialized = initialized;
@@ -1211,7 +1211,7 @@ AUPlugin::connect_and_run (vector<Sample*>& bufs, uint32_t maxbuf, int32_t& in,
AudioTimeStamp ts;
OSErr err;
- if (requires_fixed_size_buffers() && (nframes != _current_block_size) {
+ if (requires_fixed_size_buffers() && (nframes != _current_block_size)) {
unit->GlobalReset();
}
@@ -1996,7 +1996,8 @@ AUPluginInfo::load (Session& session)
AUPluginInfo *aup = new AUPluginInfo (*this);
plugin->set_info (PluginInfoPtr (aup));
- plugin->set_fixed_size_buffers (aup->creator() == "!UAD");
+ boost::dynamic_pointer_cast<AUPlugin> (plugin)->set_fixed_size_buffers (aup->creator == "!UAD");
+ return plugin;
}
catch (failed_constructor &err) {
diff --git a/libs/ardour/insert.cc b/libs/ardour/insert.cc
index 8d7ae52b57..35f224e6de 100644
--- a/libs/ardour/insert.cc
+++ b/libs/ardour/insert.cc
@@ -251,12 +251,18 @@ PluginInsert::parameter_changed (uint32_t which, float val)
}
}
-void
+int
PluginInsert::set_block_size (nframes_t nframes)
{
+ int ret = 0;
+
for (vector<boost::shared_ptr<Plugin> >::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
- (*i)->set_block_size (nframes);
+ if ((*i)->set_block_size (nframes)) {
+ ret = -1;
+ }
}
+
+ return ret;
}
void
diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc
index a945f5c13c..2da534f178 100644
--- a/libs/ardour/vst_plugin.cc
+++ b/libs/ardour/vst_plugin.cc
@@ -106,13 +106,14 @@ VSTPlugin::~VSTPlugin ()
fst_close (_fst);
}
-void
+int
VSTPlugin::set_block_size (nframes_t nframes)
{
deactivate ();
//cerr << "Dispatch effSetBlockSize for " << name() << endl;
_plugin->dispatcher (_plugin, effSetBlockSize, 0, nframes, NULL, 0.0f);
activate ();
+ return 0;
}
float