Don't endlessly set position, volume, speed, or tempo in QT UI

This commit is contained in:
Zachary Hall 2024-12-17 18:19:04 -08:00
parent 6fe53addb3
commit efbe0e8717
2 changed files with 10 additions and 5 deletions

View file

@ -5,7 +5,7 @@ void LooperWindow::Pulse() {
auto len = playback->GetLength(); auto len = playback->GetLength();
auto pos = playback->GetPosition(); auto pos = playback->GetPosition();
this->slider->SetLimits(0.0, len); this->slider->SetLimits(0.0, len);
if (!this->slider->IsPressed()) this->slider->SetValue(pos); if (!this->slider->IsPressed()) this->slider->SetValueNoSignal(pos);
auto component_count = TimeToComponentCount(len); auto component_count = TimeToComponentCount(len);
bool enable_ui = !playback->IsStopped(); bool enable_ui = !playback->IsStopped();
if (enable_ui) { if (enable_ui) {
@ -24,10 +24,10 @@ void LooperWindow::Pulse() {
auto pitch = playback->GetPitch(); auto pitch = playback->GetPitch();
auto speed = playback->GetSpeed(); auto speed = playback->GetSpeed();
auto tempo = playback->GetTempo(); auto tempo = playback->GetTempo();
if (!volume_slider->IsPressed()) volume_slider->SetValue(volume); if (!volume_slider->IsPressed()) volume_slider->SetValueNoSignal(volume);
if (!pitch_slider->IsPressed()) pitch_slider->SetValue(pitch); if (!pitch_slider->IsPressed()) pitch_slider->SetValueNoSignal(pitch);
if (!speed_slider->IsPressed()) speed_slider->SetValue(speed); if (!speed_slider->IsPressed()) speed_slider->SetValueNoSignal(speed);
if (!tempo_slider->IsPressed()) tempo_slider->SetValue(tempo); if (!tempo_slider->IsPressed()) tempo_slider->SetValueNoSignal(tempo);
volume_slider->SetLabel(fmt::format("Volume: {}%", (int)volume).c_str()); volume_slider->SetLabel(fmt::format("Volume: {}%", (int)volume).c_str());
pitch_slider->SetLabel(fmt::format("Pitch {:.02f}x", pitch).c_str()); pitch_slider->SetLabel(fmt::format("Pitch {:.02f}x", pitch).c_str());
speed_slider->SetLabel(fmt::format("Speed: {:.02f}x", speed).c_str()); speed_slider->SetLabel(fmt::format("Speed: {:.02f}x", speed).c_str());

View file

@ -76,6 +76,11 @@ void LooperSlider::set_value(double value) {
void LooperSlider::SetValue(double value) { void LooperSlider::SetValue(double value) {
set_value(value); set_value(value);
} }
void LooperSlider::SetValueNoSignal(double value) {
this->slider_value_updating = true;
set_value(value);
this->slider_value_updating = false;
}
void LooperSlider::set_min(double min) { void LooperSlider::set_min(double min) {
settings_changed = true; settings_changed = true;
this->min = min; this->min = min;