diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc index 7d32e53d09..72cc87ca96 100644 --- a/gtk2_ardour/luainstance.cc +++ b/gtk2_ardour/luainstance.cc @@ -2349,6 +2349,14 @@ LuaCallback::connect_3 (enum LuaSignal::LuaSignal ls, T ref, PBD::Signal3 void +LuaCallback::connect_4 (enum LuaSignal::LuaSignal ls, T ref, PBD::Signal4 *signal) { + signal->connect ( + _connections, invalidator (*this), + boost::bind (&LuaCallback::proxy_4, this, ls, ref, _1, _2, _3, _4), + gui_context()); +} + template void LuaCallback::proxy_0 (enum LuaSignal::LuaSignal ls, T ref) { bool ok = true; @@ -2405,3 +2413,17 @@ LuaCallback::proxy_3 (enum LuaSignal::LuaSignal ls, T ref, C1 a1, C2 a2, C3 a3) drop_callback (); /* EMIT SIGNAL */ } } + +template void +LuaCallback::proxy_4 (enum LuaSignal::LuaSignal ls, T ref, C1 a1, C2 a2, C3 a3, C4 a4) { + bool ok = true; + { + const luabridge::LuaRef& rv ((*_lua_call)((int)ls, ref, a1, a2, a3, a4)); + if (! rv.cast ()) { + ok = false; + } + } + if (!ok) { + drop_callback (); /* EMIT SIGNAL */ + } +} diff --git a/gtk2_ardour/luainstance.h b/gtk2_ardour/luainstance.h index 9318ae4d3f..0cc5cc9444 100644 --- a/gtk2_ardour/luainstance.h +++ b/gtk2_ardour/luainstance.h @@ -91,6 +91,9 @@ private: template void connect_3 (enum LuaSignal::LuaSignal, T, PBD::Signal3*); template void proxy_3 (enum LuaSignal::LuaSignal, T, C1, C2, C3); + + template void connect_4 (enum LuaSignal::LuaSignal, T, PBD::Signal4*); + template void proxy_4 (enum LuaSignal::LuaSignal, T, C1, C2, C3, C4); }; typedef boost::shared_ptr LuaCallbackPtr;