Avoid excessive power management updates

This commit is contained in:
Chocobo1 2023-07-21 01:06:20 +08:00
parent d357cdd5f9
commit cffcf5783f
No known key found for this signature in database
GPG key ID: 210D9C873253A68C
2 changed files with 10 additions and 7 deletions

View file

@ -323,8 +323,10 @@ MainWindow::MainWindow(IGUIApplication *app, WindowState initialState)
// Initialise system sleep inhibition timer
m_pwr = new PowerManagement(this);
m_preventTimer = new QTimer(this);
m_preventTimer->setSingleShot(true);
connect(m_preventTimer, &QTimer::timeout, this, &MainWindow::updatePowerManagementState);
m_preventTimer->start(PREVENT_SUSPEND_INTERVAL);
connect(pref, &Preferences::changed, this, &MainWindow::updatePowerManagementState);
updatePowerManagementState();
// Configure BT session according to options
loadPreferences();
@ -1465,8 +1467,6 @@ void MainWindow::loadPreferences()
showStatusBar(pref->isStatusbarDisplayed());
updatePowerManagementState();
m_transferListWidget->setAlternatingRowColors(pref->useAlternatingRowColors());
m_propertiesWidget->getFilesList()->setAlternatingRowColors(pref->useAlternatingRowColors());
m_propertiesWidget->getTrackerList()->setAlternatingRowColors(pref->useAlternatingRowColors());
@ -1927,10 +1927,11 @@ void MainWindow::on_actionAutoShutdown_toggled(bool enabled)
Preferences::instance()->setShutdownWhenDownloadsComplete(enabled);
}
void MainWindow::updatePowerManagementState()
void MainWindow::updatePowerManagementState() const
{
const bool preventFromSuspendWhenDownloading = Preferences::instance()->preventFromSuspendWhenDownloading();
const bool preventFromSuspendWhenSeeding = Preferences::instance()->preventFromSuspendWhenSeeding();
const auto *pref = Preferences::instance();
const bool preventFromSuspendWhenDownloading = pref->preventFromSuspendWhenDownloading();
const bool preventFromSuspendWhenSeeding = pref->preventFromSuspendWhenSeeding();
const QVector<BitTorrent::Torrent *> allTorrents = BitTorrent::Session::instance()->torrents();
const bool inhibitSuspend = std::any_of(allTorrents.cbegin(), allTorrents.cend(), [&](const BitTorrent::Torrent *torrent)
@ -1944,6 +1945,8 @@ void MainWindow::updatePowerManagementState()
return torrent->isMoving();
});
m_pwr->setActivityState(inhibitSuspend);
m_preventTimer->start(PREVENT_SUSPEND_INTERVAL);
}
void MainWindow::applyTransferListFilter()

View file

@ -164,7 +164,7 @@ private slots:
void on_actionExit_triggered();
void on_actionLock_triggered();
// Check for unpaused downloading or seeding torrents and prevent system suspend/sleep according to preferences
void updatePowerManagementState();
void updatePowerManagementState() const;
void toolbarMenuRequested();
void toolbarIconsOnly();