summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/engine/LADSPAPlugin.cpp12
-rw-r--r--src/engine/NodeFactory.cpp17
2 files changed, 20 insertions, 9 deletions
diff --git a/src/engine/LADSPAPlugin.cpp b/src/engine/LADSPAPlugin.cpp
index 4a0b5c14..38db3164 100644
--- a/src/engine/LADSPAPlugin.cpp
+++ b/src/engine/LADSPAPlugin.cpp
@@ -40,21 +40,27 @@ LADSPAPlugin::instantiate(const string& name,
SampleCount srate = engine.audio_driver()->sample_rate();
SampleCount buffer_size = engine.audio_driver()->buffer_size();
- LADSPA_Descriptor_Function df = NULL;
+ union {
+ void* dp;
+ LADSPA_Descriptor_Function fp;
+ } df;
+ df.dp = NULL;
+ df.fp = NULL;
+
LADSPANode* n = NULL;
load(); // FIXME: unload at some point
assert(_module);
assert(*_module);
- if (!_module->get_symbol("ladspa_descriptor", (void*&)df)) {
+ if (!_module->get_symbol("ladspa_descriptor", df.dp)) {
cerr << "Looks like this isn't a LADSPA plugin." << endl;
return NULL;
}
// Attempt to find the plugin in library
LADSPA_Descriptor* descriptor = NULL;
- for (unsigned long i=0; (descriptor = (LADSPA_Descriptor*)df(i)) != NULL; ++i) {
+ for (unsigned long i=0; (descriptor = (LADSPA_Descriptor*)df.fp(i)) != NULL; ++i) {
if (descriptor->UniqueID == _id) {
break;
}
diff --git a/src/engine/NodeFactory.cpp b/src/engine/NodeFactory.cpp
index e75f6605..0d15907b 100644
--- a/src/engine/NodeFactory.cpp
+++ b/src/engine/NodeFactory.cpp
@@ -221,9 +221,14 @@ NodeFactory::load_ladspa_plugins()
struct dirent* pfile;
while ((pfile = readdir(pdir))) {
-
- LADSPA_Descriptor_Function df = NULL;
- LADSPA_Descriptor* descriptor = NULL;
+ union {
+ void* dp;
+ LADSPA_Descriptor_Function fp;
+ } df;
+ df.dp = NULL;
+ df.fp = NULL;
+
+ LADSPA_Descriptor* descriptor = NULL;
if (!strcmp(pfile->d_name, ".") || !strcmp(pfile->d_name, ".."))
continue;
@@ -240,8 +245,8 @@ NodeFactory::load_ladspa_plugins()
if (!plugin_library || !(*plugin_library))
continue;
- bool found = plugin_library->get_symbol("ladspa_descriptor", (void*&)df);
- if (!found || !df) {
+ bool found = plugin_library->get_symbol("ladspa_descriptor", df.dp);
+ if (!found || !df.dp) {
cerr << "WARNING: Non-LADSPA library found in LADSPA path: " <<
lib_path << endl;
// Not a LADSPA plugin library
@@ -249,7 +254,7 @@ NodeFactory::load_ladspa_plugins()
continue;
}
- for (unsigned long i=0; (descriptor = (LADSPA_Descriptor*)df(i)) != NULL; ++i) {
+ for (unsigned long i=0; (descriptor = (LADSPA_Descriptor*)df.fp(i)) != NULL; ++i) {
char id_str[11];
snprintf(id_str, 11, "%lu", descriptor->UniqueID);
const string uri = string("ladspa:").append(id_str);