From 509b67bcc31099d8fde40407db20e58b6e516ec2 Mon Sep 17 00:00:00 2001 From: Grygorii Zharun Date: Tue, 20 May 2014 05:54:42 -0500 Subject: [PATCH] [Summary] Provided correct implementation for available channel countings [git-p4: depot-paths = "//Abdaw/dev_main/tracks/": change = 461867] --- libs/ardour/ardour/engine_state_controller.h | 4 +-- libs/ardour/engine_state_controller.cc | 34 ++++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/libs/ardour/ardour/engine_state_controller.h b/libs/ardour/ardour/engine_state_controller.h index 0e3e5f2172..e98c8702fc 100644 --- a/libs/ardour/ardour/engine_state_controller.h +++ b/libs/ardour/ardour/engine_state_controller.h @@ -66,8 +66,8 @@ public: ARDOUR::pframes_t get_default_buffer_size() const; void available_buffer_sizes_for_current_device(std::vector&) const; - uint32_t get_available_inputs_count() const {return _current_state->input_channel_states.size(); } - uint32_t get_available_outputs_count () const {return _current_state->output_channel_states.size(); } + uint32_t get_available_inputs_count() const; + uint32_t get_available_outputs_count () const; void get_physical_audio_inputs (std::vector&); void get_physical_audio_outputs (std::vector&); diff --git a/libs/ardour/engine_state_controller.cc b/libs/ardour/engine_state_controller.cc index 7beea3711d..0f61885b44 100644 --- a/libs/ardour/engine_state_controller.cc +++ b/libs/ardour/engine_state_controller.cc @@ -382,6 +382,40 @@ EngineStateController::set_new_buffer_size_in_controller(pframes_t buffer_size) } +uint32_t +EngineStateController::get_available_inputs_count() const +{ + uint32_t available_channel_count = 0; + + ChannelStateList::const_iterator iter = _current_state->input_channel_states.begin(); + + for (; iter != _current_state->input_channel_states.end(); ++iter) { + if (iter->active) { + ++available_channel_count; + } + } + + return available_channel_count; +} + + +uint32_t +EngineStateController::get_available_outputs_count () const +{ + uint32_t available_channel_count = 0; + + ChannelStateList::const_iterator iter = _current_state->output_channel_states.begin(); + + for (; iter != _current_state->output_channel_states.end(); ++iter) { + if (iter->active) { + ++available_channel_count; + } + } + + return available_channel_count; +} + + void EngineStateController::get_physical_audio_inputs(std::vector& port_names) {