X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fanalogsignal.cpp;h=90bf9673336f0da6b419140db785806445eef65b;hp=323a2434ec79083f00db203a9c23ae37031ac790;hb=c6d9cf6582589fd375e67579d42ee914ce6382a1;hpb=561ba3ae052a93fe150a2161fcdc361144e68e4f diff --git a/pv/views/trace/analogsignal.cpp b/pv/views/trace/analogsignal.cpp index 323a2434..90bf9673 100644 --- a/pv/views/trace/analogsignal.cpp +++ b/pv/views/trace/analogsignal.cpp @@ -105,13 +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(&delayed_conversion_starter_, SIGNAL(timeout()), - this, SLOT(on_delayed_conversion_starter())); - delayed_conversion_starter_.setSingleShot(true); - delayed_conversion_starter_.setInterval(1000); // 1s timeout + 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(); @@ -866,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) @@ -1017,9 +1016,11 @@ void AnalogSignal::on_conv_threshold_changed(int index) // For now, we simply assume that the unit is volt without modifiers const double thr = tokens.at(1).toDouble(); - // Only restart the conversion if the threshold was updated + // Only restart the conversion if the threshold was updated. + // We're starting a delayed conversion because the user may still be + // typing and the UI would lag if we kept on restarting it immediately if (base_->set_conversion_option("threshold_value", thr)) - delayed_conversion_starter_.start(); + base_->start_conversion(true); } if (conv_type == SignalBase::A2LConversionBySchmittTrigger && use_custom_thr) { @@ -1043,17 +1044,20 @@ void AnalogSignal::on_conv_threshold_changed(int index) const double low_thr = tokens.at(1).toDouble(); const double high_thr = tokens.at(3).toDouble(); - // Only restart the conversion if one of the options was updated + // Only restart the conversion if one of the options was updated. + // We're starting a delayed conversion because the user may still be + // typing and the UI would lag if we kept on restarting it immediately bool o1 = base_->set_conversion_option("threshold_value_low", low_thr); bool o2 = base_->set_conversion_option("threshold_value_high", high_thr); if (o1 || o2) - delayed_conversion_starter_.start(); + base_->start_conversion(true); // Start delayed conversion } - base_->set_conversion_preset(index); + base_->set_conversion_preset((SignalBase::ConversionPreset)index); - // Immediately start the conversion if we're not asking for a delayed reaction - if (!delayed_conversion_starter_.isActive()) + // Immediately start the conversion if we're not using custom values + // (i.e. we're using one of the presets) + if (!use_custom_thr) base_->start_conversion(); }