Display hardware IO individually in the port matrices unless we are in _show_only_bundles mode.

git-svn-id: svn://localhost/ardour2/branches/3.0@12348 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2012-05-20 21:56:28 +00:00
parent 9e50baae63
commit 78237f3ac3
6 changed files with 19 additions and 8 deletions

View File

@ -60,7 +60,7 @@ BundleEditorMatrix::setup_ports (int dim)
otherwise in some cases the basic system IO ports may be hidden, making
the bundle editor useless */
_ports[OTHER].gather (_session, DataType::NIL, _bundle->ports_are_inputs(), true);
_ports[OTHER].gather (_session, DataType::NIL, _bundle->ports_are_inputs(), true, show_only_bundles ());
_ports[OTHER].remove_bundle (_bundle);
_ports[OTHER].resume_signals ();
}

View File

@ -43,7 +43,7 @@ void
GlobalPortMatrix::setup_ports (int dim)
{
_ports[dim].suspend_signals ();
_ports[dim].gather (_session, type(), dim == IN, false);
_ports[dim].gather (_session, type(), dim == IN, false, show_only_bundles ());
_ports[dim].resume_signals ();
}

View File

@ -118,7 +118,7 @@ IOSelector::setup_ports (int dim)
if (dim == _other) {
_ports[_other].gather (_session, type(), _find_inputs_for_io_outputs, false);
_ports[_other].gather (_session, type(), _find_inputs_for_io_outputs, false, show_only_bundles ());
} else {

View File

@ -321,9 +321,12 @@ public:
/** Gather ports from around the system and put them in this PortGroupList.
* @param type Type of ports to collect, or NIL for all types.
* @param use_session_bundles true to use the session's non-user bundles. Doing this will mean that
* hardware ports will be gathered into stereo pairs, as the session sets up bundles for these pairs.
* Not using the session bundles will mean that all hardware IO will be presented separately.
*/
void
PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inputs, bool allow_dups)
PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inputs, bool allow_dups, bool use_session_bundles)
{
clear ();
@ -408,9 +411,12 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp
}
}
for (BundleList::iterator i = b->begin(); i != b->end(); ++i) {
if (boost::dynamic_pointer_cast<UserBundle> (*i) == 0 && (*i)->ports_are_inputs() == inputs) {
system->add_bundle (*i, allow_dups);
/* Only look for non-user bundles if instructed to do so */
if (use_session_bundles) {
for (BundleList::iterator i = b->begin(); i != b->end(); ++i) {
if (boost::dynamic_pointer_cast<UserBundle> (*i) == 0 && (*i)->ports_are_inputs() == inputs) {
system->add_bundle (*i, allow_dups);
}
}
}

View File

@ -107,7 +107,7 @@ class PortGroupList : public sigc::trackable
void add_group (boost::shared_ptr<PortGroup>);
void add_group_if_not_empty (boost::shared_ptr<PortGroup>);
void gather (ARDOUR::Session *, ARDOUR::DataType, bool, bool);
void gather (ARDOUR::Session *, ARDOUR::DataType, bool, bool, bool);
PortGroup::BundleList const & bundles () const;
void clear ();
void remove_bundle (boost::shared_ptr<ARDOUR::Bundle>);

View File

@ -623,6 +623,11 @@ PortMatrix::toggle_show_only_bundles ()
_show_only_bundles = !_show_only_bundles;
setup ();
/* The way in which hardware ports are grouped changes depending on the _show_only_bundles
setting, so we need to set things up again now.
*/
setup_all_ports ();
}
pair<uint32_t, uint32_t>