diff --git a/libs/handler.cpp b/libs/handler.cpp --- a/libs/handler.cpp +++ b/libs/handler.cpp @@ -496,8 +496,21 @@ continue; } + QDateTime now = QDateTime::currentDateTime(); + QDateTime lastScan = wifiDevice->lastScanTime(); + QDateTime lastRequestScan = wifiDevice->lastRequestScanTime(); + // if the last scan finished within the last 10 seconds + // or a scan request has been sent but hasn't finished yet + if ((lastScan.isValid() && (lastScan.msecsTo(now) < 10 * 1000)) + || (lastRequestScan.isValid() && (lastScan < lastRequestScan))) { + qCDebug(PLASMA_NM) << "Last scan finished " << lastScan.msecsTo(now) << "ms ago and last request scan was sent " + << lastRequestScan.msecsTo(now) << "ms ago, Skipping scanning on " << wifiDevice->interfaceName() << lastRequestScan << lastScan; + continue; + } + qCDebug(PLASMA_NM) << "Requesting wifi scan on device" << wifiDevice->interfaceName(); QDBusPendingReply<> reply = wifiDevice->requestScan(); + QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); watcher->setProperty("action", Handler::RequestScan); watcher->setProperty("interface", wifiDevice->interfaceName());