X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fanalogsignal.cpp;h=6d4b2c67962a24bf4405f42e3c184d6dc60fce35;hb=2bdc5796c866b9494b2c40051e973e4385d9c46f;hp=60ba2ca9831b0cd94fc95ea85d93156d771ffe06;hpb=f0b992572e7e06a1f62ede8f1bf8d9b0ad8896bc;p=pulseview.git diff --git a/pv/views/trace/analogsignal.cpp b/pv/views/trace/analogsignal.cpp index 60ba2ca9..6d4b2c67 100644 --- a/pv/views/trace/analogsignal.cpp +++ b/pv/views/trace/analogsignal.cpp @@ -444,7 +444,9 @@ void AnalogSignal::paint_trace(QPainter &p, } delete[] sample_block; - p.drawPolyline(points, points_count); + // QPainter::drawPolyline() is slow, let's paint the lines ourselves + for (int64_t i = 1; i < points_count; i++) + p.drawLine(points[i - 1], points[i]); if (show_sampling_points) { if (paint_thr_dots) { @@ -840,7 +842,7 @@ void AnalogSignal::perform_autoranging(bool keep_divs, bool force_update) if (segments.empty()) return; - static double prev_min = 0, prev_max = 0; + double signal_min_ = 0, signal_max_ = 0; double min = 0, max = 0; for (const shared_ptr& segment : segments) { @@ -849,11 +851,11 @@ void AnalogSignal::perform_autoranging(bool keep_divs, bool force_update) max = std::max(max, mm.second); } - if ((min == prev_min) && (max == prev_max) && !force_update) + if ((min == signal_min_) && (max == signal_max_) && !force_update) return; - prev_min = min; - prev_max = max; + signal_min_ = min; + signal_max_ = max; // If we're allowed to alter the div assignment... if (!keep_divs) {