diff options
author | Robin Gareus <robin@gareus.org> | 2018-01-29 22:21:59 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2018-01-30 01:33:40 +0100 |
commit | 07725134993ac9cf5f62e23cd44a91913a1a073a (patch) | |
tree | dbdb02527ba7165384b7a618af6752d42326018f /gtk2_ardour/luainstance.cc | |
parent | e3c6a41c1190253eb46844ab6915c7aa673a7dc9 (diff) |
LuaInstance: prepare for 3 argument signal/slot callbacks
Diffstat (limited to 'gtk2_ardour/luainstance.cc')
-rw-r--r-- | gtk2_ardour/luainstance.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc index 8f9572b98e..361b1e238c 100644 --- a/gtk2_ardour/luainstance.cc +++ b/gtk2_ardour/luainstance.cc @@ -2125,6 +2125,14 @@ LuaCallback::connect_2 (enum LuaSignal::LuaSignal ls, T ref, PBD::Signal2<void, gui_context()); } +template <typename T, typename C1, typename C2, typename C3> void +LuaCallback::connect_3 (enum LuaSignal::LuaSignal ls, T ref, PBD::Signal3<void, C1, C2, C3> *signal) { + signal->connect ( + _connections, invalidator (*this), + boost::bind (&LuaCallback::proxy_3<T, C1, C2, C3>, this, ls, ref, _1, _2, _3), + gui_context()); +} + template <typename T> void LuaCallback::proxy_0 (enum LuaSignal::LuaSignal ls, T ref) { bool ok = true; @@ -2167,3 +2175,17 @@ LuaCallback::proxy_2 (enum LuaSignal::LuaSignal ls, T ref, C1 a1, C2 a2) { drop_callback (); /* EMIT SIGNAL */ } } + +template <typename T, typename C1, typename C2, typename C3> void +LuaCallback::proxy_3 (enum LuaSignal::LuaSignal ls, T ref, C1 a1, C2 a2, C3 a3) { + bool ok = true; + { + const luabridge::LuaRef& rv ((*_lua_call)((int)ls, ref, a1, a2, a3)); + if (! rv.cast<bool> ()) { + ok = false; + } + } + if (!ok) { + drop_callback (); /* EMIT SIGNAL */ + } +} |