Use a default configuration instead of bailing out
If the script doesn't provide a dsp_ioconfig() function, or if it does not return a table of tables, provide an empty table of table as default, which means a single configuration with default values.
This commit is contained in:
parent
66470b96b7
commit
43cd3fd760
@ -329,22 +329,24 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
|
|||||||
|
|
||||||
lua_State* L = lua.getState ();
|
lua_State* L = lua.getState ();
|
||||||
luabridge::LuaRef ioconfig = luabridge::getGlobal (L, "dsp_ioconfig");
|
luabridge::LuaRef ioconfig = luabridge::getGlobal (L, "dsp_ioconfig");
|
||||||
if (!ioconfig.isFunction ()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
luabridge::LuaRef *_iotable = NULL; // can't use reference :(
|
luabridge::LuaRef *_iotable = NULL; // can't use reference :(
|
||||||
|
|
||||||
|
if (ioconfig.isFunction ()) {
|
||||||
try {
|
try {
|
||||||
luabridge::LuaRef iotable = ioconfig ();
|
luabridge::LuaRef iotable = ioconfig ();
|
||||||
if (iotable.isTable ()) {
|
if (iotable.isTable ()) {
|
||||||
_iotable = new luabridge::LuaRef (iotable);
|
_iotable = new luabridge::LuaRef (iotable);
|
||||||
}
|
}
|
||||||
} catch (luabridge::LuaException const& e) {
|
} catch (luabridge::LuaException const& e) {
|
||||||
return false;
|
_iotable = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_iotable) {
|
if (!_iotable) {
|
||||||
return false;
|
/* empty table as default */
|
||||||
|
luabridge::LuaRef iotable = luabridge::newTable(L);
|
||||||
|
_iotable = new luabridge::LuaRef (iotable);
|
||||||
}
|
}
|
||||||
|
|
||||||
// now we can reference it.
|
// now we can reference it.
|
||||||
@ -352,7 +354,9 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
|
|||||||
delete _iotable;
|
delete _iotable;
|
||||||
|
|
||||||
if ((iotable).length () < 1) {
|
if ((iotable).length () < 1) {
|
||||||
return false;
|
/* empty table as only config, to get default values */
|
||||||
|
luabridge::LuaRef ioconf = luabridge::newTable(L);
|
||||||
|
iotable[1] = ioconf;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int audio_in = in.n_audio ();
|
const int audio_in = in.n_audio ();
|
||||||
|
Loading…
Reference in New Issue
Block a user