fix catching polymorphic types by value
[pulseview.git] / pv / views / trace / analogsignal.cpp
index bbc23fb70074bace6adc25e304d70d50583de3dd..3595840ecfebbf211df9c1cc5d67155329f5a65a 100644 (file)
@@ -47,7 +47,6 @@
 
 #include <libsigrokcxx/libsigrokcxx.hpp>
 
-using std::bind;
 using std::deque;
 using std::div;
 using std::div_t;
@@ -57,7 +56,6 @@ using std::min;
 using std::numeric_limits;
 using std::out_of_range;
 using std::pair;
-using std::placeholders::_1;
 using std::shared_ptr;
 using std::vector;
 
@@ -285,7 +283,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();
@@ -449,8 +447,7 @@ void AnalogSignal::paint_trace(QPainter &p,
                                }
                        }
 
-                       sampling_points[idx].push_back(
-                               QRectF(x - (w / 2), y - sample_block[block_sample] * scale_ - (w / 2), w, w));
+                       sampling_points[idx].emplace_back(x - (w / 2), y - sample_block[block_sample] * scale_ - (w / 2), w, w);
                }
        }
        delete[] sample_block;
@@ -552,7 +549,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);
@@ -672,7 +669,7 @@ shared_ptr<pv::data::AnalogSegment> AnalogSignal::get_analog_segment_to_paint()
                                (segment_display_mode_ == ShowLastCompleteSegmentOnly)) {
                        try {
                                segment = segments.at(current_segment_);
-                       } catch (out_of_range) {
+                       } catch (out_of_range&) {
                                qDebug() << "Current analog segment out of range for signal" << base_->name() << ":" << current_segment_;
                        }
                }
@@ -696,7 +693,7 @@ shared_ptr<pv::data::LogicSegment> AnalogSignal::get_logic_segment_to_paint() co
                                (segment_display_mode_ == ShowLastCompleteSegmentOnly)) {
                        try {
                                segment = segments.at(current_segment_);
-                       } catch (out_of_range) {
+                       } catch (out_of_range&) {
                                qDebug() << "Current logic segment out of range for signal" << base_->name() << ":" << current_segment_;
                        }
                }