summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-08-09 14:09:27 +0200
committerRobin Gareus <robin@gareus.org>2017-08-10 02:25:58 +0200
commit8eb3b9d34b862822fbc670458a247bc74c975289 (patch)
treeb1f52169a16911b229c6dd547a5615b0d4785e8a
parentd0553753af291507823737b2c17cdb8128494f96 (diff)
Add a Lua SetSession signal/hook
-rw-r--r--gtk2_ardour/luainstance.cc9
-rw-r--r--gtk2_ardour/luainstance.h1
-rw-r--r--gtk2_ardour/luasignal_syms.h3
-rw-r--r--libs/ardour/luabindings.cc2
4 files changed, 13 insertions, 2 deletions
diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc
index 12958e1de6..bf18683c1d 100644
--- a/gtk2_ardour/luainstance.cc
+++ b/gtk2_ardour/luainstance.cc
@@ -377,6 +377,7 @@ namespace LuaMixer {
using namespace ARDOUR;
PBD::Signal0<void> LuaInstance::LuaTimerDS;
+PBD::Signal0<void> LuaInstance::SetSession;
void
LuaInstance::register_hooks (lua_State* L)
@@ -398,6 +399,10 @@ LuaInstance::register_hooks (lua_State* L)
.beginStdBitSet <LuaSignal::LAST_SIGNAL> ("Set")
.endClass()
.endNamespace ();
+
+#if 0 // Dump size -> libs/ardour/luabindings.cc
+ printf ("LuaInstance: registered %d signals\n", LuaSignal::LAST_SIGNAL);
+#endif
}
void
@@ -605,7 +610,6 @@ LuaInstance::register_classes (lua_State* L)
bind_cairo (L);
bind_dialog (L);
- register_hooks (L);
luabridge::getGlobalNamespace (L)
.beginNamespace ("ArdourUI")
@@ -1110,6 +1114,7 @@ LuaInstance::init ()
}
register_classes (L);
+ register_hooks (L);
luabridge::push <PublicEditor *> (L, &PublicEditor::instance());
lua_setglobal (L, "Editor");
@@ -1129,6 +1134,7 @@ void LuaInstance::set_session (Session* s)
i->second->set_session (s);
}
point_one_second_connection = Timers::rapid_connect (sigc::mem_fun(*this, & LuaInstance::every_point_one_seconds));
+ SetSession (); /* EMIT SIGNAL */
}
void
@@ -1806,6 +1812,7 @@ LuaCallback::init (void)
}
LuaInstance::register_classes (L);
+ LuaInstance::register_hooks (L);
luabridge::push <PublicEditor *> (L, &PublicEditor::instance());
lua_setglobal (L, "Editor");
diff --git a/gtk2_ardour/luainstance.h b/gtk2_ardour/luainstance.h
index 8ffc1d887e..60bbca7c88 100644
--- a/gtk2_ardour/luainstance.h
+++ b/gtk2_ardour/luainstance.h
@@ -121,6 +121,7 @@ public:
sigc::signal<void,PBD::ID,std::string,ActionHook> SlotChanged;
static PBD::Signal0<void> LuaTimerDS; // deci-seconds (Timer every .1s)
+ static PBD::Signal0<void> SetSession; // emitted when a session is loaded
private:
LuaInstance();
diff --git a/gtk2_ardour/luasignal_syms.h b/gtk2_ardour/luasignal_syms.h
index 9cd1af7fde..37f2624e05 100644
--- a/gtk2_ardour/luasignal_syms.h
+++ b/gtk2_ardour/luasignal_syms.h
@@ -86,6 +86,9 @@ STATIC(RegionPropertyChanged, &ARDOUR::Region::RegionPropertyChanged, 2)
// Timers
STATIC(LuaTimerDS, &LuaInstance::LuaTimerDS, 0)
+// Session load
+STATIC(SetSession, &LuaInstance::SetSession, 0)
+
// TODO per track/route signals,
// TODO per plugin actions / controllables
// TODO per region actions
diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc
index 9bd04c480c..b37d3a39a5 100644
--- a/libs/ardour/luabindings.cc
+++ b/libs/ardour/luabindings.cc
@@ -160,7 +160,7 @@ CLASSINFO(TrackSelection);
CLASSINFO(TrackViewList);
-CLASSKEYS(std::bitset<47ul>); // LuaSignal::LAST_SIGNAL
+CLASSKEYS(std::bitset<48ul>); // LuaSignal::LAST_SIGNAL
CLASSKEYS(void);
CLASSKEYS(float);