From 821ab4aae21759cb60d9d518476d89e1f776d7a7 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 17 Nov 2018 00:12:10 +0100 Subject: [PATCH] Add a 1Hz Lua Callback Signal --- gtk2_ardour/luainstance.cc | 9 +++++++++ gtk2_ardour/luainstance.h | 4 ++++ gtk2_ardour/luasignal_syms.h | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc index 4303794bfe..bc5c1b0e6d 100644 --- a/gtk2_ardour/luainstance.cc +++ b/gtk2_ardour/luainstance.cc @@ -512,6 +512,7 @@ lua_translate_order (RouteDialogs::InsertAt place) using namespace ARDOUR; +PBD::Signal0 LuaInstance::LuaTimerS; PBD::Signal0 LuaInstance::LuaTimerDS; PBD::Signal0 LuaInstance::SetSession; @@ -1341,6 +1342,7 @@ void LuaInstance::set_session (Session* s) for (LuaCallbackMap::iterator i = _callbacks.begin(); i != _callbacks.end(); ++i) { i->second->set_session (s); } + second_connection = Timers::rapid_connect (sigc::mem_fun(*this, & LuaInstance::every_second)); point_one_second_connection = Timers::rapid_connect (sigc::mem_fun(*this, & LuaInstance::every_point_one_seconds)); SetSession (); /* EMIT SIGNAL */ } @@ -1349,6 +1351,7 @@ void LuaInstance::session_going_away () { ENSURE_GUI_THREAD (*this, &LuaInstance::session_going_away); + second_connection.disconnect (); point_one_second_connection.disconnect (); (*_lua_clear)(); @@ -1363,6 +1366,12 @@ LuaInstance::session_going_away () lua.do_command ("collectgarbage();"); } +void +LuaInstance::every_second () +{ + LuaTimerS (); // emit signal +} + void LuaInstance::every_point_one_seconds () { diff --git a/gtk2_ardour/luainstance.h b/gtk2_ardour/luainstance.h index 8f5fb0ba87..9915d6b306 100644 --- a/gtk2_ardour/luainstance.h +++ b/gtk2_ardour/luainstance.h @@ -126,6 +126,7 @@ public: bool lua_slot (const PBD::ID&, std::string&, std::string&, ActionHook&, ARDOUR::LuaScriptParamList&); sigc::signal SlotChanged; + static PBD::Signal0 LuaTimerS; // deci-seconds (Timer every 1s) static PBD::Signal0 LuaTimerDS; // deci-seconds (Timer every .1s) static PBD::Signal0 SetSession; // emitted when a session is loaded @@ -152,6 +153,9 @@ private: LuaCallbackMap _callbacks; PBD::ScopedConnectionList _slotcon; + void every_second (); + sigc::connection second_connection; + void every_point_one_seconds (); sigc::connection point_one_second_connection; }; diff --git a/gtk2_ardour/luasignal_syms.h b/gtk2_ardour/luasignal_syms.h index 352b653df2..d68c23a128 100644 --- a/gtk2_ardour/luasignal_syms.h +++ b/gtk2_ardour/luasignal_syms.h @@ -21,7 +21,6 @@ STATIC(SessionLoad, &, 0) STATIC(SessionClose, &, 0) #endif -//STATIC(EverySecond, get_timers().second, 0) // XXX STATIC(ConfigChanged, &ARDOUR::Config->ParameterChanged, 1) // engine instance @@ -85,6 +84,7 @@ STATIC(DiskUnderrun, &ARDOUR::DiskReader::Underrun, 0) STATIC(RegionPropertyChanged, &ARDOUR::Region::RegionPropertyChanged, 2) // Timers +STATIC(LuaTimerS, &LuaInstance::LuaTimerS, 0) STATIC(LuaTimerDS, &LuaInstance::LuaTimerDS, 0) // Session load