implement missing PortManager methods and lua-bind them

This commit is contained in:
Robin Gareus 2016-04-26 14:35:47 +02:00
parent 7f8c7d8647
commit 5227f57f2e
2 changed files with 57 additions and 0 deletions

View File

@ -868,6 +868,14 @@ LuaBindings::common (lua_State* L)
.addConst ("SrcBest", ARDOUR::SrcQuality(SrcBest))
.endNamespace ()
.beginNamespace ("PortFlags")
.addConst ("IsInput", ARDOUR::PortFlags(IsInput))
.addConst ("IsOutput", ARDOUR::PortFlags(IsOutput))
.addConst ("IsPhysical", ARDOUR::PortFlags(IsPhysical))
.addConst ("CanMonitor", ARDOUR::PortFlags(CanMonitor))
.addConst ("IsTerminal", ARDOUR::PortFlags(IsTerminal))
.endNamespace ()
.beginNamespace ("PlaylistDisposition")
.addConst ("CopyPlaylist", ARDOUR::PlaylistDisposition(CopyPlaylist))
.addConst ("NewPlaylist", ARDOUR::PlaylistDisposition(NewPlaylist))
@ -932,7 +940,20 @@ LuaBindings::common (lua_State* L)
.beginClass <PortManager> ("PortManager")
.addFunction ("port_engine", &PortManager::port_engine)
.addFunction ("connected", &PortManager::connected)
.addFunction ("connect", &PortManager::connect)
.addFunction ("physically_connected", &PortManager::physically_connected)
.addFunction ("disconnect", (int (PortManager::*)(const std::string&, const std::string&))&PortManager::disconnect)
.addFunction ("disconnect_port", (int (PortManager::*)(boost::shared_ptr<Port>))&PortManager::disconnect)
.addFunction ("get_port_by_name", &PortManager::get_port_by_name)
.addFunction ("get_pretty_name_by_name", &PortManager::get_pretty_name_by_name)
.addFunction ("port_is_physical", &PortManager::port_is_physical)
.addFunction ("get_physical_outputs", &PortManager::get_physical_outputs)
.addFunction ("get_physical_inputs", &PortManager::get_physical_inputs)
.addFunction ("n_physical_outputs", &PortManager::n_physical_outputs)
.addFunction ("n_physical_inputs", &PortManager::n_physical_inputs)
.addRefFunction ("get_connections", &PortManager::get_connections)
.addRefFunction ("get_ports", (int (PortManager::*)(DataType, PortManager::PortList&))&PortManager::get_ports)
.addRefFunction ("get_backend_ports", (int (PortManager::*)(const std::string&, DataType, PortFlags, std::vector<std::string>&))&PortManager::get_ports)
.endClass()
.deriveClass <AudioEngine, PortManager> ("AudioEngine")

View File

@ -158,6 +158,7 @@ void
PortManager::get_physical_outputs (DataType type, std::vector<std::string>& s)
{
if (!_backend) {
s.clear ();
return;
}
_backend->get_physical_outputs (type, s);
@ -167,6 +168,7 @@ void
PortManager::get_physical_inputs (DataType type, std::vector<std::string>& s)
{
if (!_backend) {
s.clear ();
return;
}
@ -385,6 +387,40 @@ PortManager::connected (const string& port_name)
return _backend->connected (handle);
}
bool
PortManager::physically_connected (const string& port_name)
{
if (!_backend) {
return false;
}
PortEngine::PortHandle handle = _backend->get_port_by_name (port_name);
if (!handle) {
return false;
}
return _backend->physically_connected (handle);
}
int
PortManager::get_connections (const string& port_name, std::vector<std::string>& s)
{
if (!_backend) {
s.clear ();
return 0;
}
PortEngine::PortHandle handle = _backend->get_port_by_name (port_name);
if (!handle) {
s.clear ();
return 0;
}
return _backend->get_connections (handle, s);
}
int
PortManager::connect (const string& source, const string& destination)
{