From dda0cda30b58da0c25467b152e6f6e5fda63e8a8 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 27 Jan 2010 15:40:23 +0000 Subject: [PATCH] better algorithm for checking when AU plugins ::can_do() a particular IO configuration (Ben Loftis) git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@6574 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/audio_unit.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index 610e54a6ff..7e472eb90e 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -801,6 +801,18 @@ AUPlugin::can_do (int32_t in, int32_t& out) cerr << name() << " has " << io_configs.size() << " IO Configurations\n"; } + //first search for the simple case that matches what we need exactly + for (vector >::iterator i = io_configs.begin(); i != io_configs.end(); ++i) { + int32_t possible_in = i->first; + int32_t possible_out = i->second; + + if (possible_in == in && possible_out== out) { + return 1; + } + } + + /* now allow potentially "imprecise" matches */ + for (vector >::iterator i = io_configs.begin(); i != io_configs.end(); ++i) { int32_t possible_in = i->first;