Qt/spinner: reduce cpu usage from 12% to 9% (#21552)

* faster spinner

* reduce to 6%

* Revert "reduce to 6%"

This reverts commit 65e23bb7a9542ccca13b8f01b7a5d56580a61bf6.
old-commit-hash: 776516d72b
commatwo_master
Dean Lee 4 years ago committed by GitHub
parent 17867a1122
commit 96ee460f96
  1. 16
      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);
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);

Loading…
Cancel
Save