From 0aee0aab3e588fdaa4742e77d5dcfe11058161c8 Mon Sep 17 00:00:00 2001 From: GZharun Date: Tue, 27 Jan 2015 15:04:48 +0200 Subject: [PATCH] [Summary] Added HDD buffering drop down to the tracks control panel and connected required functionality to it. --- gtk2_ardour/tracks_control_panel.cc | 3 +- gtk2_ardour/tracks_control_panel.h | 3 +- gtk2_ardour/tracks_control_panel.logic.cc | 56 ++++++++--------------- gtk2_ardour/tracks_control_panel.logic.h | 3 +- gtk2_ardour/ui/tracks_preferences.xml | 47 ++++--------------- libs/ardour/ardour/utils.h | 3 ++ libs/ardour/utils.cc | 33 +++++++++++++ 7 files changed, 65 insertions(+), 83 deletions(-) diff --git a/gtk2_ardour/tracks_control_panel.cc b/gtk2_ardour/tracks_control_panel.cc index 49ec5f2341..83c84d8cf4 100644 --- a/gtk2_ardour/tracks_control_panel.cc +++ b/gtk2_ardour/tracks_control_panel.cc @@ -78,8 +78,7 @@ TracksControlPanel::TracksControlPanel () , _waveform_shape_dropdown (get_waves_dropdown ("waveform_shape_dropdown")) , _peak_hold_time_dropdown (get_waves_dropdown ("peak_hold_time_dropdown")) , _dpm_fall_off_dropdown (get_waves_dropdown ("dpm_fall_off_dropdown")) - , _recording_seconds_dropdown (get_waves_dropdown ("recording_seconds_dropdown")) - , _playback_seconds_dropdown (get_waves_dropdown ("playback_seconds_dropdown")) + , _hard_disk_buffering_dropdown (get_waves_dropdown ("hard_disk_buffering_dropdown")) , _have_control (false) , _ignore_changes (0) diff --git a/gtk2_ardour/tracks_control_panel.h b/gtk2_ardour/tracks_control_panel.h index fdea33e4ac..40c8dc5bcc 100644 --- a/gtk2_ardour/tracks_control_panel.h +++ b/gtk2_ardour/tracks_control_panel.h @@ -94,8 +94,7 @@ class TracksControlPanel : public WavesDialog, public PBD::ScopedConnectionList WavesDropdown& _waveform_shape_dropdown; WavesDropdown& _peak_hold_time_dropdown; WavesDropdown& _dpm_fall_off_dropdown; - WavesDropdown& _recording_seconds_dropdown; - WavesDropdown& _playback_seconds_dropdown; + WavesDropdown& _hard_disk_buffering_dropdown; Gtk::Label& _latency_label; Gtk::Label& _default_open_path; diff --git a/gtk2_ardour/tracks_control_panel.logic.cc b/gtk2_ardour/tracks_control_panel.logic.cc index 85283a18d8..e5db97e467 100644 --- a/gtk2_ardour/tracks_control_panel.logic.cc +++ b/gtk2_ardour/tracks_control_panel.logic.cc @@ -1023,42 +1023,26 @@ TracksControlPanel::display_meter_falloff () } void -TracksControlPanel::display_audio_capture_buffer_seconds () +TracksControlPanel::display_hdd_buffering () { - long period = Config->get_audio_capture_buffer_seconds (); + BufferingPreset preset = Config->get_buffering_preset (); int selected_item = 0; - if (period <= 5) { - selected_item = 0; - } else if (period <= 10) { - selected_item = 1; - } else if (period <= 15) { - selected_item = 2; - } else { - selected_item = 3; - } - _recording_seconds_dropdown.set_current_item (selected_item); + switch (preset) { + case Small: + selected_item = 0; + break; + case Medium: + selected_item = 1; + break; + case Large: + selected_item = 2; + break; + } + + _hard_disk_buffering_dropdown.set_current_item (selected_item); } -void -TracksControlPanel::display_audio_playback_buffer_seconds () -{ - long period = Config->get_audio_playback_buffer_seconds (); - int selected_item = 0; - - if (period <= 5) { - selected_item = 0; - } else if (period <= 10) { - selected_item = 1; - } else if (period <= 15) { - selected_item = 2; - } else { - selected_item = 3; - } - - _playback_seconds_dropdown.set_current_item (selected_item); -} - void TracksControlPanel::display_mmc_control () { @@ -1114,8 +1098,7 @@ TracksControlPanel::display_general_preferences () display_waveform_color_fader (); display_meter_hold (); display_meter_falloff (); - display_audio_capture_buffer_seconds (); - display_audio_playback_buffer_seconds (); + display_hdd_buffering (); display_mmc_control (); display_send_mmc (); display_mmc_send_device_id (); @@ -1222,8 +1205,7 @@ TracksControlPanel::save_general_preferences () Config->set_history_depth (_limit_undo_history_spinbutton.get_value ()); Config->set_saved_history_depth (_save_undo_history_spinbutton.get_value ()); Config->set_save_history (_save_undo_history_spinbutton.get_value () > 0); - Config->set_audio_capture_buffer_seconds (PBD::atoi (_recording_seconds_dropdown.get_text ())); - Config->set_audio_playback_buffer_seconds (PBD::atoi (_playback_seconds_dropdown.get_text())); + Config->set_buffering_preset (string_to_hdd_buffering_preset (_hard_disk_buffering_dropdown.get_text ())); } void TracksControlPanel::on_engine_dropdown_item_clicked (WavesDropdown*, int) @@ -1786,9 +1768,7 @@ TracksControlPanel::on_parameter_changed (const std::string& parameter_name) } else if (parameter_name == "meter-falloff") { display_meter_falloff (); } else if (parameter_name == "capture-buffer-seconds") { - display_audio_capture_buffer_seconds (); - } else if (parameter_name == "playback-buffer-seconds") { - display_audio_playback_buffer_seconds (); + display_hdd_buffering (); } else if (parameter_name == "mmc-control") { display_mmc_control (); } else if (parameter_name == "send-mmc") { diff --git a/gtk2_ardour/tracks_control_panel.logic.h b/gtk2_ardour/tracks_control_panel.logic.h index 2288520d98..06640a9b1a 100644 --- a/gtk2_ardour/tracks_control_panel.logic.h +++ b/gtk2_ardour/tracks_control_panel.logic.h @@ -133,8 +133,7 @@ void display_waveform_shape (); void display_meter_hold (); void display_meter_falloff (); - void display_audio_capture_buffer_seconds (); - void display_audio_playback_buffer_seconds (); + void display_hdd_buffering (); void display_mmc_control (); void display_send_mmc (); void display_mmc_send_device_id (); diff --git a/gtk2_ardour/ui/tracks_preferences.xml b/gtk2_ardour/ui/tracks_preferences.xml index fae0093242..522cd1a9a3 100644 --- a/gtk2_ardour/ui/tracks_preferences.xml +++ b/gtk2_ardour/ui/tracks_preferences.xml @@ -922,9 +922,9 @@ - - diff --git a/libs/ardour/ardour/utils.h b/libs/ardour/ardour/utils.h index 5edfca46d7..488576a64f 100644 --- a/libs/ardour/ardour/utils.h +++ b/libs/ardour/ardour/utils.h @@ -75,6 +75,9 @@ LIBARDOUR_API ARDOUR::SyncSource string_to_sync_source (std::string str); LIBARDOUR_API const char* edit_mode_to_string (ARDOUR::EditMode); LIBARDOUR_API ARDOUR::EditMode string_to_edit_mode (std::string); + +LIBARDOUR_API ARDOUR::BufferingPreset string_to_hdd_buffering_preset (const std::string& str); +LIBARDOUR_API const char* hdd_buffering_preset_to_string (BufferingPreset preset); #undef OLD_GAIN_MATH #define OLD_GAIN_MATH diff --git a/libs/ardour/utils.cc b/libs/ardour/utils.cc index c2536550b7..694a418a31 100644 --- a/libs/ardour/utils.cc +++ b/libs/ardour/utils.cc @@ -504,6 +504,39 @@ ARDOUR::sync_source_to_string (SyncSource src, bool sh) return _("JACK"); } +BufferingPreset +ARDOUR::string_to_hdd_buffering_preset (const string& str) +{ + if (str == _("Small")) { + return Small; + } else if (str == _("Medium")) { + return Medium; + } else if (str == _("Large")) { + return Large; + } + + fatal << string_compose (_("programming error: unknown buffering preset \"%1\""), str) << endmsg; + /*NOTREACHED*/ + return Small; +} + +const char* +ARDOUR::hdd_buffering_preset_to_string (BufferingPreset preset) +{ + switch (preset) { + case Small: + return _("Small"); + + case Medium: + return _("Medium"); + + case Large: + return _("Large"); + } + /* GRRRR .... stupid, stupid gcc - you can't get here from there, all enum values are handled */ + return _("Small"); +} + float ARDOUR::meter_falloff_to_float (MeterFalloff falloff) {