From 7600f59f3acb1969599c1986a994c99b9821822b Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Tue, 14 Feb 2023 08:26:08 +0300 Subject: [PATCH] Prevent precise timers from being used when unnecessary The implementation of QTimer::singleShot() uses Qt::PreciseTimer if interval is less than 2 seconds. This isn't mentioned in the docs. Qt::PreciseTimer increases the system's timer resolution which negatively affects power consumption. PR #18555. Closes #18350. --- src/app/main.cpp | 2 +- src/base/bittorrent/sessionimpl.cpp | 2 +- src/base/torrentfileswatcher.cpp | 2 +- src/webui/api/appcontroller.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index 719f1926c..86350dcf1 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -283,7 +283,7 @@ void showSplashScreen() painter.drawText(224 - painter.fontMetrics().horizontalAdvance(version), 270, version); QSplashScreen *splash = new QSplashScreen(splashImg); splash->show(); - QTimer::singleShot(1500ms, splash, &QObject::deleteLater); + QTimer::singleShot(1500ms, Qt::CoarseTimer, splash, &QObject::deleteLater); qApp->processEvents(); } #endif // DISABLE_GUI diff --git a/src/base/bittorrent/sessionimpl.cpp b/src/base/bittorrent/sessionimpl.cpp index 50caa36c4..a5932aa7a 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -5064,7 +5064,7 @@ void SessionImpl::enqueueRefresh() { Q_ASSERT(!m_refreshEnqueued); - QTimer::singleShot(refreshInterval(), this, [this] () + QTimer::singleShot(refreshInterval(), Qt::CoarseTimer, this, [this] { m_nativeSession->post_torrent_updates(); m_nativeSession->post_session_stats(); diff --git a/src/base/torrentfileswatcher.cpp b/src/base/torrentfileswatcher.cpp index be3971f84..d47ea5742 100644 --- a/src/base/torrentfileswatcher.cpp +++ b/src/base/torrentfileswatcher.cpp @@ -502,7 +502,7 @@ void TorrentFilesWatcher::Worker::removeWatchedFolder(const Path &path) void TorrentFilesWatcher::Worker::scheduleWatchedFolderProcessing(const Path &path) { - QTimer::singleShot(2s, this, [this, path]() + QTimer::singleShot(2s, Qt::CoarseTimer, this, [this, path] { processWatchedFolder(path); }); diff --git a/src/webui/api/appcontroller.cpp b/src/webui/api/appcontroller.cpp index 99533388b..39a432ee4 100644 --- a/src/webui/api/appcontroller.cpp +++ b/src/webui/api/appcontroller.cpp @@ -94,7 +94,7 @@ void AppController::shutdownAction() // Special handling for shutdown, we // need to reply to the Web UI before // actually shutting down. - QTimer::singleShot(100ms, qApp, []() + QTimer::singleShot(100ms, Qt::CoarseTimer, qApp, [] { QCoreApplication::exit(); });