From ff2b6ddfd2763b6b365c7466d51a1e2374e4bd4b Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Wed, 5 May 2010 12:37:21 +0200 Subject: QHostInfo: Emit postponed lookup results when finishing current Reviewed-by: Thiago --- src/network/kernel/qhostinfo.cpp | 12 ++++++++++++ src/network/kernel/qhostinfo_p.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index fd39347..28a6c84 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -471,6 +471,18 @@ void QHostInfoRunnable::run() hostInfo.setLookupId(id); resultEmitter.emitResultsReady(hostInfo); + // now also iterate through the postponed ones + QMutableListIterator iterator(manager->postponedLookups); + while (iterator.hasNext()) { + QHostInfoRunnable* postponed = iterator.next(); + if (toBeLookedUp == postponed->toBeLookedUp) { + // we can now emit + iterator.remove(); + hostInfo.setLookupId(postponed->id); + postponed->resultEmitter.emitResultsReady(hostInfo); + } + } + manager->lookupFinished(this); // thread goes back to QThreadPool diff --git a/src/network/kernel/qhostinfo_p.h b/src/network/kernel/qhostinfo_p.h index e11766b..af270d8 100644 --- a/src/network/kernel/qhostinfo_p.h +++ b/src/network/kernel/qhostinfo_p.h @@ -173,6 +173,8 @@ public: bool wasAborted(int id); QHostInfoCache cache; + + friend class QHostInfoRunnable; protected: QList currentLookups; // in progress QList postponedLookups; // postponed because in progress for same host -- cgit v0.12