aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/LV2/src/Acceleration/lv2wrapper.cpp
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2020-07-16 23:35:07 +0200
committerHarald Eilertsen <haraldei@anduin.net>2020-07-16 23:35:07 +0200
commitd5a5c482c42bd6069bf7f130fe2c3f8de71fad5e (patch)
treeef814c07ca189afebb4c853830b241406f5ca0a4 /plugins/LV2/src/Acceleration/lv2wrapper.cpp
parented1c33f8a60b2e34c78473c2c1392fb3b809e524 (diff)
downloadairwindows-lv2-port-d5a5c482c42bd6069bf7f130fe2c3f8de71fad5e.tar.gz
airwindows-lv2-port-d5a5c482c42bd6069bf7f130fe2c3f8de71fad5e.tar.bz2
airwindows-lv2-port-d5a5c482c42bd6069bf7f130fe2c3f8de71fad5e.zip
LV2: Split lv2 interface code and actual plugin.
Let's keep the LV2 interfacing and the actual plugin separate. For now the actual plugin is completely independent of the plugin system, and the wrapper code just forwards everything that's plugin specific to the plugin proper.
Diffstat (limited to 'plugins/LV2/src/Acceleration/lv2wrapper.cpp')
-rw-r--r--plugins/LV2/src/Acceleration/lv2wrapper.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/plugins/LV2/src/Acceleration/lv2wrapper.cpp b/plugins/LV2/src/Acceleration/lv2wrapper.cpp
new file mode 100644
index 0000000..3b1c04c
--- /dev/null
+++ b/plugins/LV2/src/Acceleration/lv2wrapper.cpp
@@ -0,0 +1,70 @@
+#include "lv2/core/lv2.h"
+#include "Acceleration.h"
+
+namespace {
+
+const char * ACCELERATION_URI = "https://www.airwindows.com/acceleration";
+
+LV2_Handle instantiate(
+ const LV2_Descriptor * d,
+ double rate,
+ const char * path,
+ const LV2_Feature * const * features)
+{
+ return new Acceleration{rate};
+}
+
+void connect_port(
+ LV2_Handle instance,
+ uint32_t port,
+ void * data)
+{
+ auto accel = static_cast<Acceleration *>(instance);
+ accel->connect_port(port, data);
+}
+
+void activate(LV2_Handle instance)
+{
+}
+
+void run(LV2_Handle instance, uint32_t num_samples)
+{
+ auto accel = static_cast<Acceleration *>(instance);
+ accel->run(num_samples);
+}
+
+void deactivate(LV2_Handle)
+{
+}
+
+void destroy(LV2_Handle instance)
+{
+ delete static_cast<Acceleration *>(instance);
+}
+
+const void * extension_data(const char * uri)
+{
+ return nullptr;
+}
+
+const LV2_Descriptor descriptor = {
+ ACCELERATION_URI,
+ instantiate,
+ connect_port,
+ activate,
+ run,
+ deactivate,
+ destroy,
+ extension_data
+};
+
+} // anon namespace
+
+LV2_SYMBOL_EXPORT
+const LV2_Descriptor * lv2_descriptor(uint32_t idx)
+{
+ if (idx == 0)
+ return &descriptor;
+
+ return nullptr;
+}