/*
- Copyright (C) 2009 Paul Davis
+ Copyright (C) 2009 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
/* Unfortunately we have to pass the DataType into this constructor so that we can
create the right kind of JACK port; aside from this we'll use the virtual function type ()
- to establish type.
+ to establish type.
*/
assert (_name.find_first_of (':') == std::string::npos);
-
+
if ((_jack_port = jack_port_register (_engine->jack (), _name.c_str (), t.to_jack_type (), _flags, 0)) == 0) {
throw failed_constructor ();
}
c.push_back (jc[i]);
++n;
}
+ free (jc);
}
-
+
return n;
}
std::string const this_shrt = _engine->make_port_name_non_relative (_name);
int r = 0;
-
+
if (sends_output ()) {
r = jack_connect (_engine->jack (), this_shrt.c_str (), other_shrt.c_str ());
} else {
r = jack_connect (_engine->jack (), other_shrt.c_str (), this_shrt.c_str());
}
-
+
if (r == 0) {
_connections.insert (other);
}
std::string const this_shrt = _engine->make_port_name_non_relative (_name);
int r = 0;
-
+
if (sends_output ()) {
r = jack_disconnect (_engine->jack (), this_shrt.c_str (), other_shrt.c_str ());
} else {
r = jack_disconnect (_engine->jack (), other_shrt.c_str (), this_shrt.c_str ());
}
-
+
if (r == 0) {
_connections.erase (other);
}
-
+
return r;
}
void
Port::recompute_total_latency () const
{
-#ifdef HAVE_JACK_RECOMPUTE_LATENCY
- jack_recompute_total_latency (_engine->jack (), _jack_port);
-#endif
+#ifdef HAVE_JACK_RECOMPUTE_LATENCY
+ jack_client_t* jack = _engine->jack();
+
+ if (!jack) {
+ return;
+ }
+
+ jack_recompute_total_latency (jack, _jack_port);
+#endif
}
nframes_t
Port::total_latency () const
{
- return jack_port_get_total_latency (_engine->jack (), _jack_port);
+ jack_client_t* jack = _engine->jack();
+
+ if (!jack) {
+ return 0;
+ }
+
+ return jack_port_get_total_latency (jack, _jack_port);
}
int
Port::reestablish ()
{
+ jack_client_t* jack = _engine->jack();
+
+ if (!jack) {
+ return -1;
+ }
+
cerr << "RE-REGISTER: " << _name.c_str() << endl;
- _jack_port = jack_port_register (_engine->jack(), _name.c_str(), type().to_jack_type(), _flags, 0);
+ _jack_port = jack_port_register (jack, _name.c_str(), type().to_jack_type(), _flags, 0);
if (_jack_port == 0) {
PBD::error << string_compose (_("could not reregister %1"), _name) << endmsg;
int const r = jack_port_set_name (_jack_port, n.c_str());
if (r == 0) {
- _name = n;
+ _name = n;
}
return r;