From 8eb3b9d34b862822fbc670458a247bc74c975289 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 9 Aug 2017 14:09:27 +0200 Subject: Add a Lua SetSession signal/hook --- gtk2_ardour/luainstance.cc | 9 ++++++++- gtk2_ardour/luainstance.h | 1 + gtk2_ardour/luasignal_syms.h | 3 +++ libs/ardour/luabindings.cc | 2 +- 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 LuaInstance::LuaTimerDS; +PBD::Signal0 LuaInstance::SetSession; void LuaInstance::register_hooks (lua_State* L) @@ -398,6 +399,10 @@ LuaInstance::register_hooks (lua_State* L) .beginStdBitSet ("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 (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 (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 SlotChanged; static PBD::Signal0 LuaTimerDS; // deci-seconds (Timer every .1s) + static PBD::Signal0 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); -- cgit v1.2.3