From 43cd3fd7606bc765c6ff3af43eada389eddb1beb Mon Sep 17 00:00:00 2001 From: "Julien \"_FrnchFrgg_\" RIVAUD" Date: Thu, 4 Aug 2016 18:03:24 +0200 Subject: 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. --- libs/ardour/luaproc.cc | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'libs/ardour/luaproc.cc') diff --git a/libs/ardour/luaproc.cc b/libs/ardour/luaproc.cc index e157467094..e73b18ee21 100644 --- a/libs/ardour/luaproc.cc +++ b/libs/ardour/luaproc.cc @@ -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 (); -- cgit v1.2.3