From df08bd331c533986081b22cfe789994e0701d436 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 bbb293479..fb7d5d12a 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 d8df665b3..59a1eec9d 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -4929,7 +4929,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 11b04c953..1e56ffbb9 100644 --- a/src/base/torrentfileswatcher.cpp +++ b/src/base/torrentfileswatcher.cpp @@ -503,7 +503,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 e0ddc7d5b..f7a723af8 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(); });