#include "LuaBridge/LuaBridge.h"
+#include "ardour_http.h"
#include "ardour_ui.h"
#include "public_editor.h"
#include "region_selection.h"
#include "time_axis_view.h"
#include "selection.h"
#include "script_selector.h"
+#include "timers.h"
#include "utils_videotl.h"
#include "pbd/i18n.h"
}; // namespace
-std::string lua_http_get (const char *u) {
- char *rv = a3_curl_http_get (u, NULL);
- if (!rv) {
- return "";
- }
- std::string s (rv);
- free (rv);
- return s;
-}
-
////////////////////////////////////////////////////////////////////////////////
#define xstr(s) stringify(s)
using namespace ARDOUR;
+PBD::Signal0<void> LuaInstance::LuaTimerDS;
+
void
LuaInstance::register_hooks (lua_State* L)
{
luabridge::getGlobalNamespace (L)
.beginNamespace ("ArdourUI")
- .addFunction ("curl_http_get", &lua_http_get)
+ .addFunction ("http_get", (std::string (*)(const std::string&))&ArdourCurl::http_get)
.beginStdList <ArdourMarker*> ("ArdourMarkerList")
.endClass ()
for (LuaCallbackMap::iterator i = _callbacks.begin(); i != _callbacks.end(); ++i) {
i->second->set_session (s);
}
+ point_one_second_connection = Timers::rapid_connect (sigc::mem_fun(*this, & LuaInstance::every_point_one_seconds));
}
void
LuaInstance::session_going_away ()
{
ENSURE_GUI_THREAD (*this, &LuaInstance::session_going_away);
+ point_one_second_connection.disconnect ();
+
(*_lua_clear)();
for (int i = 0; i < 9; ++i) {
ActionChanged (i, ""); /* EMIT SIGNAL */
lua.do_command ("collectgarbage();");
}
+void
+LuaInstance::every_point_one_seconds ()
+{
+ LuaTimerDS (); // emit signal
+}
+
int
LuaInstance::set_state (const XMLNode& node)
{
{
try {
(*_lua_call_action)(id + 1);
+ lua.collect_garbage_step ();
} catch (luabridge::LuaException const& e) {
cerr << "LuaException:" << e.what () << endl;
}
{
SessionHandlePtr::set_session (s);
- if (_session) {
- lua_State* L = lua.getState();
- LuaBindings::set_session (L, _session);
+ if (!_session) {
+ return;
}
+ lua_State* L = lua.getState();
+ LuaBindings::set_session (L, _session);
+
reconnect();
}
_session = 0;
drop_callback (); /* EMIT SIGNAL */
+
+ lua_State* L = lua.getState();
+ LuaBindings::set_session (L, 0);
+ lua.do_command ("collectgarbage();");
}
void