Fix high CPU usage on keyboard status icon updates

This commit is contained in:
Cacodemon345
2026-01-04 17:14:10 +06:00
parent 24e164c862
commit 72dac6148b
2 changed files with 12 additions and 5 deletions

View File

@@ -889,6 +889,7 @@ main(int argc, char *argv[])
QObject::connect(&discordupdate, &QTimer::timeout, &app, [] {
discord_run_callbacks();
});
discordupdate.setInterval(1000);
if (enable_discord)
discordupdate.start(1000);
}

View File

@@ -238,20 +238,26 @@ MainWindow::MainWindow(QWidget *parent)
QTimer *ledKeyboardTimer = new QTimer(this);
ledKeyboardTimer->setTimerType(Qt::CoarseTimer);
ledKeyboardTimer->setInterval(1);
ledKeyboardTimer->setInterval(20);
connect(ledKeyboardTimer, &QTimer::timeout, this, [this]() {
uint8_t prev_caps = 255, prev_num = 255, prev_scroll = 255, prev_kana = 255;
uint8_t caps, num, scroll, kana;
keyboard_get_states(&caps, &num, &scroll, &kana);
if (num_label->isVisible())
if (num_label->isVisible() && prev_num != num)
num_label->setPixmap(num ? this->num_icon.pixmap(QSize(16, 16)) : this->num_icon_off.pixmap(QSize(16, 16)));
if (caps_label->isVisible())
if (caps_label->isVisible() && prev_caps != caps)
caps_label->setPixmap(caps ? this->caps_icon.pixmap(QSize(16, 16)) : this->caps_icon_off.pixmap(QSize(16, 16)));
if (scroll_label->isVisible())
if (scroll_label->isVisible() && prev_scroll != scroll)
scroll_label->setPixmap(scroll ? this->scroll_icon.pixmap(QSize(16, 16)) : this->scroll_icon_off.pixmap(QSize(16, 16)));
if (kana_label->isVisible())
if (kana_label->isVisible() && prev_kana != kana)
kana_label->setPixmap(kana ? this->kana_icon.pixmap(QSize(16, 16)) : this->kana_icon_off.pixmap(QSize(16, 16)));
prev_caps = caps;
prev_num = num;
prev_scroll = scroll;
prev_kana = kana;
});
ledKeyboardTimer->start();