summaryrefslogtreecommitdiff
path: root/gtk2_ardour/luainstance.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-04 23:59:42 +0200
committerRobin Gareus <robin@gareus.org>2016-04-05 00:00:06 +0200
commit7026d88a46a9df7b073b18bb171a66cd0089715c (patch)
tree2bf32f504b246121db789e6a1f9a7d3bfa74bca5 /gtk2_ardour/luainstance.cc
parentb9a1ac06e32adf489c36af6bd2534c66c7c95763 (diff)
re-add std::vector<std::string> just for cairo's set_dash()
This fixes crash with the window version.
Diffstat (limited to 'gtk2_ardour/luainstance.cc')
-rw-r--r--gtk2_ardour/luainstance.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc
index 6f293986bf..8197284e69 100644
--- a/gtk2_ardour/luainstance.cc
+++ b/gtk2_ardour/luainstance.cc
@@ -102,6 +102,20 @@ LuaInstance::register_hooks (lua_State* L)
void
LuaInstance::bind_cairo (lua_State* L)
{
+ /* std::vector<double> for set_dash()
+ * for Windows (DLL, .exe) this needs to be bound in the same memory context as "Cairo".
+ *
+ * The std::vector<> argument in set_dash() has a fixed address in ardour.exe, while
+ * the address of the one in libardour.dll is mapped when loading the .dll
+ *
+ * see LuaBindings::set_session() for a detailed explanation
+ */
+ luabridge::getGlobalNamespace (L)
+ .beginNamespace ("C")
+ .beginStdVector <double> ("DoubleVector")
+ .endClass ()
+ .endNamespace ();
+
luabridge::getGlobalNamespace (L)
.beginNamespace ("Cairo")
.beginClass <Cairo::Context> ("Context")
@@ -114,7 +128,7 @@ LuaInstance::bind_cairo (lua_State* L)
.addFunction ("set_line_width", &Cairo::Context::set_line_width)
.addFunction ("set_line_cap", &Cairo::Context::set_line_cap)
.addFunction ("set_line_join", &Cairo::Context::set_line_join)
- .addFunction ("set_dash", (void (Cairo::Context::*)(std::vector<double>&, double))&Cairo::Context::set_dash)
+ .addFunction ("set_dash", (void (Cairo::Context::*)(const std::vector<double>&, double))&Cairo::Context::set_dash)
.addFunction ("unset_dash", &Cairo::Context::unset_dash)
.addFunction ("translate", &Cairo::Context::translate)
.addFunction ("scale", &Cairo::Context::scale)