From 776516d72b85c5cdf4f0c40992dcedb03d06638c Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 3 Aug 2021 12:24:02 +0800 Subject: [PATCH] Qt/spinner: reduce cpu usage from 12% to 9% (#21552) * faster spinner * reduce to 6% * Revert "reduce to 6%" This reverts commit 65e23bb7a9542ccca13b8f01b7a5d56580a61bf6. --- selfdrive/ui/qt/spinner.cc | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/selfdrive/ui/qt/spinner.cc b/selfdrive/ui/qt/spinner.cc index 5323d182ab..8948d2adb7 100644 --- a/selfdrive/ui/qt/spinner.cc +++ b/selfdrive/ui/qt/spinner.cc @@ -15,20 +15,24 @@ #include "selfdrive/ui/qt/util.h" TrackWidget::TrackWidget(QWidget *parent) : QWidget(parent) { + setAttribute(Qt::WA_OpaquePaintEvent); setFixedSize(spinner_size); - setAutoFillBackground(true); - setPalette(Qt::black); // pre-compute all the track imgs. make this a gif instead? QPixmap comma_img = QPixmap("../assets/img_spinner_comma.png").scaled(spinner_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); - QTransform transform(1, 0, 0, 1, width() / 2, height() / 2); QPixmap track_img = QPixmap("../assets/img_spinner_track.png").scaled(spinner_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); - for (QPixmap &img : track_imgs) { - img = comma_img; - QPainter p(&img); - p.setRenderHint(QPainter::SmoothPixmapTransform); + + QTransform transform(1, 0, 0, 1, width() / 2, height() / 2); + QPixmap pm(spinner_size); + QPainter p(&pm); + p.setRenderHint(QPainter::SmoothPixmapTransform); + for (int i = 0; i < track_imgs.size(); ++i) { + p.resetTransform(); + p.fillRect(0, 0, spinner_size.width(), spinner_size.height(), Qt::black); + p.drawPixmap(0, 0, comma_img); p.setTransform(transform.rotate(360 / spinner_fps)); p.drawPixmap(-width() / 2, -height() / 2, track_img); + track_imgs[i] = pm.copy(); } m_anim.setDuration(1000);