13
0

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:
Julien "_FrnchFrgg_" RIVAUD 2016-08-04 18:03:24 +02:00
parent 66470b96b7
commit 43cd3fd760

View File

@ -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 ();