From c6d9cf6582589fd375e67579d42ee914ce6382a1 Mon Sep 17 00:00:00 2001 From: Soeren Apel Date: Wed, 2 Aug 2017 18:23:32 +0200 Subject: [PATCH] Use min/max notification for autoranging of analog signals --- pv/data/signalbase.cpp | 5 ++--- pv/data/signalbase.hpp | 2 ++ pv/views/trace/analogsignal.cpp | 12 ++++++++---- pv/views/trace/analogsignal.hpp | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pv/data/signalbase.cpp b/pv/data/signalbase.cpp index da05f107..e267885d 100644 --- a/pv/data/signalbase.cpp +++ b/pv/data/signalbase.cpp @@ -590,13 +590,12 @@ void SignalBase::on_samples_added(QObject* segment, uint64_t start_sample, void SignalBase::on_min_max_changed(float min, float max) { - (void)min; - (void)max; - // Restart conversion if one is enabled and uses a calculated threshold if ((conversion_type_ != NoConversion) && (get_current_conversion_preset() == DynamicPreset)) start_conversion(true); + + min_max_changed(min, max); } void SignalBase::on_capture_state_changed(int state) diff --git a/pv/data/signalbase.hpp b/pv/data/signalbase.hpp index 16a94bd4..865f2551 100644 --- a/pv/data/signalbase.hpp +++ b/pv/data/signalbase.hpp @@ -284,6 +284,8 @@ Q_SIGNALS: void samples_added(QObject* segment, uint64_t start_sample, uint64_t end_sample); + void min_max_changed(float min, float max); + private Q_SLOTS: void on_samples_cleared(); diff --git a/pv/views/trace/analogsignal.cpp b/pv/views/trace/analogsignal.cpp index 81dd551b..90bf9673 100644 --- a/pv/views/trace/analogsignal.cpp +++ b/pv/views/trace/analogsignal.cpp @@ -105,8 +105,8 @@ AnalogSignal::AnalogSignal( pv::data::Analog* analog_data = dynamic_cast(data().get()); - connect(analog_data, SIGNAL(samples_added(QObject*, uint64_t, uint64_t)), - this, SLOT(on_samples_added())); + connect(analog_data, SIGNAL(min_max_changed(float, float)), + this, SLOT(on_min_max_changed(float, float))); GlobalSettings gs; div_height_ = gs.value(GlobalSettings::Key_View_DefaultDivHeight).toInt(); @@ -861,9 +861,13 @@ void AnalogSignal::populate_popup_form(QWidget *parent, QFormLayout *form) form->addRow(layout); } -void AnalogSignal::on_samples_added() +void AnalogSignal::on_min_max_changed(float min, float max) { - perform_autoranging(false, false); + (void)min; + (void)max; + + if (autoranging_) + perform_autoranging(false, false); } void AnalogSignal::on_pos_vdivs_changed(int vdivs) diff --git a/pv/views/trace/analogsignal.hpp b/pv/views/trace/analogsignal.hpp index 24d4a21c..cf4938a7 100644 --- a/pv/views/trace/analogsignal.hpp +++ b/pv/views/trace/analogsignal.hpp @@ -156,7 +156,7 @@ protected: void populate_popup_form(QWidget *parent, QFormLayout *form); private Q_SLOTS: - void on_samples_added(); + void on_min_max_changed(float min, float max); void on_pos_vdivs_changed(int vdivs); void on_neg_vdivs_changed(int vdivs); -- 2.30.2