From ee324cd887455f3ea456572ef6d8b627f6dd0bb3 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sat, 1 Apr 2017 13:56:45 +0200 Subject: Add chunksize and underrun counter to the UI. --- plugingui/dgwindow.cc | 42 ++++++++++++++++++++++++++++++++++++++++-- plugingui/dgwindow.h | 5 +++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/plugingui/dgwindow.cc b/plugingui/dgwindow.cc index dc1f7f6..44f52e7 100644 --- a/plugingui/dgwindow.cc +++ b/plugingui/dgwindow.cc @@ -141,11 +141,17 @@ public: limit.resize(80, 80); float free_mem = calcFreeMemory() / (1024.0 * 1024.0); - limitKnob.setRange(std::min(500.0, free_mem / 2.0), free_mem); + limitKnob.setRange(std::min(256.0, free_mem / 2.0), free_mem); limitKnob.resize(60, 60); limit.setControl(&limitKnob); layout.addItem(&limit); + chunk.resize(80, 80); + chunkKnob.setRange(64.0, 4096.0); + chunkKnob.resize(60, 60); + chunk.setControl(&chunkKnob); + layout.addItem(&chunk); + reload_button.setText("Reload"); reload_button.resize(100, 50); layout.addItem(&reload_button); @@ -155,9 +161,11 @@ public: LabeledControl streamer{this, "Streaming"}; LabeledControl limit{this, "MB Limit"}; + LabeledControl chunk{this, "kB Chunk"}; CheckBox streamerCheck{&streamer}; Knob limitKnob{&limit}; + Knob chunkKnob{&chunk}; Button reload_button{this}; }; @@ -254,7 +262,7 @@ DGWindow::DGWindow(void* native_window, Config& config, Settings& settings, layout.addItem(l3); disk_streaming_controls = new DiskStreamingControls(this); - disk_streaming_controls->resize(80 * 3, 80); + disk_streaming_controls->resize(80 * 4, 80); layout.addItem(disk_streaming_controls); CONNECT(&disk_streaming_controls->streamerCheck, stateChangedNotifier, this, &DGWindow::streamerCheckClick); @@ -262,6 +270,9 @@ DGWindow::DGWindow(void* native_window, Config& config, Settings& settings, CONNECT(&disk_streaming_controls->limitKnob, valueChangedNotifier, this, &DGWindow::limitValueChanged); + CONNECT(&disk_streaming_controls->chunkKnob, valueChangedNotifier, + this, &DGWindow::chunkValueChanged); + CONNECT(&disk_streaming_controls->reload_button, clickNotifier, this, &DGWindow::reloadClicked); @@ -275,6 +286,11 @@ DGWindow::DGWindow(void* native_window, Config& config, Settings& settings, lbl_version->setAlignment(TextAlignment::center); layout.addItem(lbl_version); + lbl_underruns.setText("Underruns: 0"); + lbl_underruns.resize(width, 20); + lbl_underruns.setAlignment(TextAlignment::center); + layout.addItem(&lbl_underruns); + // Create file browser fileBrowser = new FileBrowser(this); fileBrowser->move(0, 0); @@ -309,6 +325,10 @@ DGWindow::DGWindow(void* native_window, Config& config, Settings& settings, &disk_streaming_controls->streamerCheck, &CheckBox::setChecked); CONNECT(this, settings_notifier.disk_cache_upper_limit, this, &DGWindow::limitSettingsValueChanged); + CONNECT(this, settings_notifier.disk_cache_chunk_size, + this, &DGWindow::chunkSettingsValueChanged); + CONNECT(this, settings_notifier.number_of_underruns, + this, &DGWindow::underrunsChanged); } DGWindow::~DGWindow() @@ -386,11 +406,29 @@ void DGWindow::limitValueChanged(float value) settings.disk_cache_upper_limit.store(value * 1024 * 1024); } +void DGWindow::chunkValueChanged(float value) +{ + // value is in MB + settings.disk_cache_chunk_size.store(value * 1024); +} + void DGWindow::limitSettingsValueChanged(float value) { disk_streaming_controls->limitKnob.setValue(value / (1024 * 1024)); } +void DGWindow::chunkSettingsValueChanged(float value) +{ + disk_streaming_controls->chunkKnob.setValue(value / 1024); +} + +void DGWindow::underrunsChanged(int underruns) +{ + static char buf[256]; + sprintf(buf, "Underuns: %d", underruns); + lbl_underruns.setText(buf); +} + void DGWindow::reloadClicked() { settings.reload_counter++; diff --git a/plugingui/dgwindow.h b/plugingui/dgwindow.h index f6fdb46..d35caaa 100644 --- a/plugingui/dgwindow.h +++ b/plugingui/dgwindow.h @@ -66,12 +66,15 @@ protected: private: void streamerCheckClick(bool value); void limitValueChanged(float value); + void chunkValueChanged(float value); void limitSettingsValueChanged(float value); + void chunkSettingsValueChanged(float value); void reloadClicked(); void attackValueChanged(float value); void falloffValueChanged(float value); void velocityCheckClick(bool checked); + void underrunsChanged(int underruns); void kitBrowseClick(); void midimapBrowseClick(); void selectKitFile(const std::string& filename); @@ -105,6 +108,8 @@ private: Settings& settings; SettingsNotifier& settings_notifier; + + Label lbl_underruns{this}; }; } // GUI:: -- cgit v1.2.3