]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/analogsignal.cpp
Fix #1125 by adding a missing typecast
[pulseview.git] / pv / views / trace / analogsignal.cpp
index e6bd875600130141e5789f9f9b7626aec3c0b75c..11a73068b25c13bb7724971a57aad8775796e38b 100644 (file)
@@ -118,8 +118,7 @@ AnalogSignal::AnalogSignal(
        connect(analog_data, SIGNAL(min_max_changed(float, float)),
                this, SLOT(on_min_max_changed(float, float)));
 
-       GlobalSettings::register_change_handler(GlobalSettings::Key_View_ConversionThresholdDispMode,
-               bind(&AnalogSignal::on_settingViewConversionThresholdDispMode_changed, this, _1));
+       GlobalSettings::add_change_handler(this);
 
        GlobalSettings gs;
        conversion_threshold_disp_mode_ =
@@ -131,6 +130,11 @@ AnalogSignal::AnalogSignal(
        update_scale();
 }
 
+AnalogSignal::~AnalogSignal()
+{
+       GlobalSettings::remove_change_handler(this);
+}
+
 shared_ptr<pv::data::SignalData> AnalogSignal::data() const
 {
        return base_->analog_data();
@@ -206,6 +210,12 @@ void AnalogSignal::scale_handle_drag_release()
        update_scale();
 }
 
+void AnalogSignal::on_setting_changed(const QString &key, const QVariant &value)
+{
+       if (key == GlobalSettings::Key_View_ConversionThresholdDispMode)
+               on_settingViewConversionThresholdDispMode_changed(value);
+}
+
 void AnalogSignal::paint_back(QPainter &p, ViewItemPaintParams &pp)
 {
        if (!base_->enabled())
@@ -275,7 +285,7 @@ void AnalogSignal::paint_mid(QPainter &p, ViewItemPaintParams &pp)
                const double pixels_offset = pp.pixels_offset();
                const double samplerate = max(1.0, segment->samplerate());
                const pv::util::Timestamp& start_time = segment->start_time();
-               const int64_t last_sample = segment->get_sample_count() - 1;
+               const int64_t last_sample = (int64_t)segment->get_sample_count() - 1;
                const double samples_per_pixel = samplerate * pp.scale();
                const pv::util::Timestamp start = samplerate * (pp.offset() - start_time);
                const pv::util::Timestamp end = start + samples_per_pixel * pp.width();
@@ -542,7 +552,7 @@ void AnalogSignal::paint_logic_mid(QPainter &p, ViewItemPaintParams &pp)
 
        const double pixels_offset = pp.pixels_offset();
        const pv::util::Timestamp& start_time = segment->start_time();
-       const int64_t last_sample = segment->get_sample_count() - 1;
+       const int64_t last_sample = (int64_t)segment->get_sample_count() - 1;
        const double samples_per_pixel = samplerate * pp.scale();
        const double pixels_per_sample = 1 / samples_per_pixel;
        const pv::util::Timestamp start = samplerate * (pp.offset() - start_time);