Disable antialiasing on high-DPI displays
[pulseview.git] / pv / views / trace / viewport.cpp
index e5fb607639eac3b6ae7a2985c1c7735988c16f40..44c912a1acf1ccc117718d09cbc45b816e64a284 100644 (file)
@@ -30,6 +30,8 @@
 #include <pv/session.hpp>
 
 #include <QMouseEvent>
+#include <QScreen>
+#include <QWindow>
 
 #include <QDebug>
 
@@ -172,16 +174,19 @@ void Viewport::paintEvent(QPaintEvent*)
                [](const shared_ptr<TimeItem> &t) { return !t; }));
 
        QPainter p(this);
-       p.setRenderHint(QPainter::Antialiasing);
+
+       bool useAntialiasing =
+               window()->windowHandle()->screen()->devicePixelRatio() < 2.0;
+       p.setRenderHint(QPainter::Antialiasing, useAntialiasing);
 
        for (LayerPaintFunc *paint_func = layer_paint_funcs;
                        *paint_func; paint_func++) {
                ViewItemPaintParams time_pp(rect(), view_.scale(), view_.offset());
-               for (const shared_ptr<TimeItem> t : time_items)
+               for (const shared_ptr<TimeItem>& t : time_items)
                        (t.get()->*(*paint_func))(p, time_pp);
 
                ViewItemPaintParams row_pp(rect(), view_.scale(), view_.offset());
-               for (const shared_ptr<RowItem> r : row_items)
+               for (const shared_ptr<RowItem>& r : row_items)
                        (r.get()->*(*paint_func))(p, row_pp);
        }