diff options
author | David Robillard <d@drobilla.net> | 2006-08-11 07:15:30 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-08-11 07:15:30 +0000 |
commit | cbdf686e391bc2e7b93f37a5d3fa9197cb178078 (patch) | |
tree | 455b52d56b02b90444cd1c39f3ddcb703ca30e10 /libs/ardour/ardour/io.h | |
parent | 30c08ba655330232767554c48bda1975bfb5628c (diff) |
- Replaced integer port counts (and input/output maximum/minimum) with ChanCount, which can count multiple types and does the reasonable thing for all comparison operators
- Removed the fader/meters from MIDI mixer strips, at least until they do something
- Made the Add Route dialog refuse to create MIDI busses, Spifftacular warning dialog and all
Changes a bit more widespread than I was hoping, but worked out really well - lots of code will continue to work fine even when multi-typed (eg instrument) IOs come around, just ignoring the types it doesn't care about. Most all changes related to counts are little search/replace deals, logic doesn't need to change. Hopefully SVN can handle (automatic) merging with the other SoC projects if the buffer change goes as well.
Next step: do for buffers what the last two commits did for ports.
git-svn-id: svn://localhost/ardour2/branches/midi@787 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/io.h')
-rw-r--r-- | libs/ardour/ardour/io.h | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/libs/ardour/ardour/io.h b/libs/ardour/ardour/io.h index 818916f185..a4b50618bb 100644 --- a/libs/ardour/ardour/io.h +++ b/libs/ardour/ardour/io.h @@ -41,6 +41,7 @@ #include <ardour/types.h> #include <ardour/data_type.h> #include <ardour/port_set.h> +#include <ardour/chan_count.h> using std::string; using std::vector; @@ -72,14 +73,20 @@ class IO : public Stateful, public ARDOUR::StateManager int input_min = -1, int input_max = -1, int output_min = -1, int output_max = -1, DataType default_type = DataType::AUDIO); - + virtual ~IO(); - int input_minimum() const { return _input_minimum; } - int input_maximum() const { return _input_maximum; } - int output_minimum() const { return _output_minimum; } - int output_maximum() const { return _output_maximum; } + ChanCount input_minimum() const { return _input_minimum; } + ChanCount input_maximum() const { return _input_maximum; } + ChanCount output_minimum() const { return _output_minimum; } + ChanCount output_maximum() const { return _output_maximum; } + void set_input_minimum (ChanCount n); + void set_input_maximum (ChanCount n); + void set_output_minimum (ChanCount n); + void set_output_maximum (ChanCount n); + + // Do not write any new code using these void set_input_minimum (int n); void set_input_maximum (int n); void set_output_minimum (int n); @@ -162,8 +169,8 @@ class IO : public Stateful, public ARDOUR::StateManager MidiPort* midi_input(uint32_t n) const; MidiPort* midi_output(uint32_t n) const; - uint32_t n_inputs () const { return _inputs.num_ports(); } - uint32_t n_outputs () const { return _outputs.num_ports(); } + const ChanCount& n_inputs () const { return _inputs.chan_count(); } + const ChanCount& n_outputs () const { return _outputs.chan_count(); } sigc::signal<void,IOChange,void*> input_changed; sigc::signal<void,IOChange,void*> output_changed; @@ -193,7 +200,7 @@ class IO : public Stateful, public ARDOUR::StateManager static sigc::signal<int> PortsLegal; static sigc::signal<int> PannersLegal; static sigc::signal<int> ConnectingLegal; - static sigc::signal<void,uint32_t> MoreOutputs; + static sigc::signal<void,ChanCount> MoreOutputs; static sigc::signal<int> PortsCreated; PBD::Controllable& gain_control() { @@ -203,7 +210,8 @@ class IO : public Stateful, public ARDOUR::StateManager /* Peak metering */ float peak_input_power (uint32_t n) { - if (n < std::max (n_inputs(), n_outputs())) { + if (n < std::max (_inputs.chan_count().get(DataType::AUDIO), + _outputs.chan_count().get(DataType::AUDIO))) { return _visible_peak_power[n]; } else { return minus_infinity(); @@ -300,7 +308,8 @@ public: void reset_peak_meters(); void reset_panner (); - virtual uint32_t pans_required() const { return n_inputs(); } + virtual uint32_t pans_required() const + { return _inputs.chan_count().get(DataType::AUDIO); } static void apply_declick (vector<Sample*>&, uint32_t nbufs, jack_nframes_t nframes, gain_t initial, gain_t target, bool invert_polarity); @@ -363,10 +372,10 @@ public: sigc::connection port_legal_c; sigc::connection panner_legal_c; - int _input_minimum; - int _input_maximum; - int _output_minimum; - int _output_maximum; + ChanCount _input_minimum; + ChanCount _input_maximum; + ChanCount _output_minimum; + ChanCount _output_maximum; static int parse_io_string (const string&, vector<string>& chns); |