diff --git a/src/libs/zeroconf/servicebrowser.cpp b/src/libs/zeroconf/servicebrowser.cpp index a80356637d9ed15c7ad94ca53041ae941da305a4..a7b147e8d04e916ba8b3d65a52ae9d5c33f67f1c 100644 --- a/src/libs/zeroconf/servicebrowser.cpp +++ b/src/libs/zeroconf/servicebrowser.cpp @@ -1240,7 +1240,7 @@ void ServiceBrowserPrivate::maybeUpdateLists() QMap<QString, ServiceGatherer::Ptr>::iterator j = gatherers.begin(); while (i != endi && j != gatherers.end()) { const QString vi = *i; - QString vj = (*j)->fullName(); + QString vj = j.value()->fullName(); if (vi == vj){ ++i; ++j; @@ -1364,13 +1364,15 @@ bool ServiceBrowserPrivate::internalStartBrowsing() void ServiceBrowserPrivate::triggerRefresh() { QMutexLocker l(mainConnection->lock()); + const qint64 msecDelay = 5100; + delayDeletesUntil = QDateTime::currentMSecsSinceEpoch() + msecDelay; stopBrowsing(); shouldRefresh = true; } void ServiceBrowserPrivate::refresh() { - const qint64 msecDelay = 100; + const qint64 msecDelay = 500; delayDeletesUntil = QDateTime::currentMSecsSinceEpoch() + msecDelay; shouldRefresh = false; internalStartBrowsing(); @@ -1386,6 +1388,8 @@ void ServiceBrowserPrivate::stopBrowsing() updateFlowStatusForCancel(); serviceConnection = 0; } + knownServices.clear(); + browsing = false; } } @@ -1667,9 +1671,10 @@ ZConfLib::RunLoopStatus MainConnection::handleEvent() nextEvent = bAtt->delayDeletesUntil; } if (nextEvent <= now) - nextEvent = -1; + nextEvent = 5000; else nextEvent -= now; + maybeUpdateLists(); ZConfLib::RunLoopStatus err = lib->processOneEvent(m_mainRef, nextEvent); if (err != ZConfLib::ProcessedOk && err != ZConfLib::ProcessedIdle) { qDebug() << "processOneEvent returned " << err;