summaryrefslogtreecommitdiff
path: root/gtk2_ardour/luainstance.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2018-01-29 22:21:59 +0100
committerRobin Gareus <robin@gareus.org>2018-01-30 01:33:40 +0100
commit07725134993ac9cf5f62e23cd44a91913a1a073a (patch)
treedbdb02527ba7165384b7a618af6752d42326018f /gtk2_ardour/luainstance.cc
parente3c6a41c1190253eb46844ab6915c7aa673a7dc9 (diff)
LuaInstance: prepare for 3 argument signal/slot callbacks
Diffstat (limited to 'gtk2_ardour/luainstance.cc')
-rw-r--r--gtk2_ardour/luainstance.cc22
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 */
+ }
+}