diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-06-09 15:02:18 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-06-09 15:02:18 +0000 |
commit | 01829e63382ebab3d54b02fffbad11de7cf69ea6 (patch) | |
tree | c54c5d811a68f88ab4c8290c035949f972b26710 /gtk2_ardour/rc_option_editor.cc | |
parent | 2b9dc7b380bb4e40171067f42b4010970869a57d (diff) |
GUI control of playback & buffer sizes, but not dynamic (i.e. requires a restart)
git-svn-id: svn://localhost/ardour2/branches/3.0@7249 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/rc_option_editor.cc')
-rw-r--r-- | gtk2_ardour/rc_option_editor.cc | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index d90773b334..83b3e498cd 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -713,6 +713,80 @@ private: HScale _dpi_slider; }; +class BufferingOptions : public OptionEditorBox +{ +public: + BufferingOptions (RCConfiguration* c) + : _rc_config (c) + , _playback_adjustment (5, 1, 60, 1, 4) + , _capture_adjustment (5, 1, 60, 1, 4) + , _playback_slider (_playback_adjustment) + , _capture_slider (_capture_adjustment) + { + _playback_adjustment.set_value (_rc_config->get_audio_playback_buffer_seconds()); + + Label* l = manage (new Label (_("Playback (seconds of buffering):"))); + l->set_name ("OptionsLabel"); + + _playback_slider.set_update_policy (UPDATE_DISCONTINUOUS); + HBox* h = manage (new HBox); + h->set_spacing (4); + h->pack_start (*l, false, false); + h->pack_start (_playback_slider, true, true); + + _box->pack_start (*h, false, false); + + _capture_adjustment.set_value (_rc_config->get_audio_capture_buffer_seconds()); + + l = manage (new Label (_("Recording (seconds of buffering):"))); + l->set_name ("OptionsLabel"); + + _capture_slider.set_update_policy (UPDATE_DISCONTINUOUS); + h = manage (new HBox); + h->set_spacing (4); + h->pack_start (*l, false, false); + h->pack_start (_capture_slider, true, true); + + _box->pack_start (*h, false, false); + + _capture_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &BufferingOptions::capture_changed)); + _playback_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &BufferingOptions::playback_changed)); + } + + void parameter_changed (string const & p) + { + if (p == "playback-buffer-seconds") { + _playback_adjustment.set_value (_rc_config->get_audio_playback_buffer_seconds()); + } else if (p == "capture-buffer-seconds") { + _capture_adjustment.set_value (_rc_config->get_audio_capture_buffer_seconds()); + } + } + + void set_state_from_config () + { + parameter_changed ("playback-buffer-seconds"); + parameter_changed ("capture-buffer-seconds"); + } + +private: + + void playback_changed () + { + _rc_config->set_audio_playback_buffer_seconds ((long) _playback_adjustment.get_value()); + } + + void capture_changed () + { + _rc_config->set_audio_capture_buffer_seconds ((long) _capture_adjustment.get_value()); + } + + RCConfiguration* _rc_config; + Adjustment _playback_adjustment; + Adjustment _capture_adjustment; + HScale _playback_slider; + HScale _capture_slider; +}; + class ControlSurfacesOptions : public OptionEditorBox { public: @@ -1102,6 +1176,10 @@ RCOptionEditor::RCOptionEditor () /* AUDIO */ + add_option (_("Audio"), new OptionEditorHeading (_("Buffering"))); + + add_option (_("Audio"), new BufferingOptions (_rc_config)); + add_option (_("Audio"), new OptionEditorHeading (_("Monitoring"))); add_option (_("Audio"), |