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 ();
|
||||
luabridge::LuaRef ioconfig = luabridge::getGlobal (L, "dsp_ioconfig");
|
||||
if (!ioconfig.isFunction ()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
luabridge::LuaRef *_iotable = NULL; // can't use reference :(
|
||||
try {
|
||||
luabridge::LuaRef iotable = ioconfig ();
|
||||
if (iotable.isTable ()) {
|
||||
_iotable = new luabridge::LuaRef (iotable);
|
||||
|
||||
if (ioconfig.isFunction ()) {
|
||||
try {
|
||||
luabridge::LuaRef iotable = ioconfig ();
|
||||
if (iotable.isTable ()) {
|
||||
_iotable = new luabridge::LuaRef (iotable);
|
||||
}
|
||||
} catch (luabridge::LuaException const& e) {
|
||||
_iotable = NULL;
|
||||
}
|
||||
} catch (luabridge::LuaException const& e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!_iotable) {
|
||||
return false;
|
||||
/* empty table as default */
|
||||
luabridge::LuaRef iotable = luabridge::newTable(L);
|
||||
_iotable = new luabridge::LuaRef (iotable);
|
||||
}
|
||||
|
||||
// now we can reference it.
|
||||
@ -352,7 +354,9 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
|
||||
delete _iotable;
|
||||
|
||||
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 ();
|
||||
|
Loading…
Reference in New Issue
Block a user