]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/analogsignal.cpp
Use multiple drawLine() calls instead of drawPolyline()
[pulseview.git] / pv / views / trace / analogsignal.cpp
index 599246418b1993bd74ffaf1d9c51a1e14a2b860d..3430ab3cf48eb6996ca0cd52901c1d9c884aa4cb 100644 (file)
@@ -319,7 +319,7 @@ void AnalogSignal::paint_fore(QPainter &p, ViewItemPaintParams &pp)
 
 void AnalogSignal::paint_grid(QPainter &p, int y, int left, int right)
 {
-       bool wasAntialiased = p.testRenderHint(QPainter::Antialiasing);
+       bool was_antialiased = p.testRenderHint(QPainter::Antialiasing);
        p.setRenderHint(QPainter::Antialiasing, false);
 
        if (pos_vdivs_ > 0) {
@@ -364,7 +364,7 @@ void AnalogSignal::paint_grid(QPainter &p, int y, int left, int right)
                }
        }
 
-       p.setRenderHint(QPainter::Antialiasing, wasAntialiased);
+       p.setRenderHint(QPainter::Antialiasing, was_antialiased);
 }
 
 void AnalogSignal::paint_trace(QPainter &p,
@@ -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) {