summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorOlivier Goffart <olivier.goffart@nokia.com>2011-05-06 09:54:24 +0200
committerOlivier Goffart <olivier.goffart@nokia.com>2011-05-06 09:54:24 +0200
commit3a76f74e888d62548d7a4e18bdce83c6bc80d6a2 (patch)
tree6bb5205d97384e60aec5a66d93da4fb400f38fcf /src/network
parentc3ad797d8af6a7f1cbd51553430393a4317a23b9 (diff)
parent7a22950819d60545c0d6ac96b463badcf88ddbd0 (diff)
Merge remote-tracking branch 'mainline/master' into earth
Diffstat (limited to 'src/network')
-rw-r--r--src/network/bearer/qnetworkconfigmanager_p.cpp14
-rw-r--r--src/network/bearer/qnetworkconfigmanager_p.h2
-rw-r--r--src/network/network.pro7
-rw-r--r--src/network/socket/qabstractsocket.cpp4
4 files changed, 21 insertions, 6 deletions
diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp
index c108ad34cf..e9b6703dd9 100644
--- a/src/network/bearer/qnetworkconfigmanager_p.cpp
+++ b/src/network/bearer/qnetworkconfigmanager_p.cpp
@@ -60,7 +60,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
#endif
QNetworkConfigurationManagerPrivate::QNetworkConfigurationManagerPrivate()
- : QObject(), mutex(QMutex::Recursive), forcedPolling(0), firstUpdate(true)
+ : QObject(), pollTimer(0), mutex(QMutex::Recursive), forcedPolling(0), firstUpdate(true)
{
qRegisterMetaType<QNetworkConfiguration>("QNetworkConfiguration");
qRegisterMetaType<QNetworkConfigurationPrivatePointer>("QNetworkConfigurationPrivatePointer");
@@ -442,9 +442,19 @@ void QNetworkConfigurationManagerPrivate::startPolling()
{
QMutexLocker locker(&mutex);
+ if(!pollTimer) {
+ pollTimer = new QTimer(this);
+ pollTimer->setInterval(10000);
+ pollTimer->setSingleShot(true);
+ connect(pollTimer, SIGNAL(timeout()), this, SLOT(pollEngines()));
+ }
+
+ if(pollTimer->isActive())
+ return;
+
foreach (QBearerEngine *engine, sessionEngines) {
if (engine->requiresPolling() && (forcedPolling || engine->configurationsInUse())) {
- QTimer::singleShot(10000, this, SLOT(pollEngines()));
+ pollTimer->start();
break;
}
}
diff --git a/src/network/bearer/qnetworkconfigmanager_p.h b/src/network/bearer/qnetworkconfigmanager_p.h
index 81f38c5183..abc4b9b4fa 100644
--- a/src/network/bearer/qnetworkconfigmanager_p.h
+++ b/src/network/bearer/qnetworkconfigmanager_p.h
@@ -64,6 +64,7 @@
QT_BEGIN_NAMESPACE
class QBearerEngine;
+class QTimer;
class Q_NETWORK_EXPORT QNetworkConfigurationManagerPrivate : public QObject
{
@@ -107,6 +108,7 @@ private Q_SLOTS:
private:
void startPolling();
+ QTimer *pollTimer;
private:
mutable QMutex mutex;
diff --git a/src/network/network.pro b/src/network/network.pro
index 948922b8c1..fc5d08d936 100644
--- a/src/network/network.pro
+++ b/src/network/network.pro
@@ -1,7 +1,10 @@
# Qt network module
-
TARGET = QtNetwork
QPRO_PWD = $$PWD
+
+CONFIG += module
+MODULE_PRI = ../modules/qt_network.pri
+
DEFINES += QT_BUILD_NETWORK_LIB QT_NO_USING_NAMESPACE
#DEFINES += QLOCALSERVER_DEBUG QLOCALSOCKET_DEBUG
#DEFINES += QNETWORKDISKCACHE_DEBUG
@@ -10,7 +13,7 @@ DEFINES += QT_BUILD_NETWORK_LIB QT_NO_USING_NAMESPACE
#DEFINES += QABSTRACTSOCKET_DEBUG QNATIVESOCKETENGINE_DEBUG
#DEFINES += QTCPSOCKETENGINE_DEBUG QTCPSOCKET_DEBUG QTCPSERVER_DEBUG QSSLSOCKET_DEBUG
#DEFINES += QUDPSOCKET_DEBUG QUDPSERVER_DEBUG
-QT = core
+QT = core-private
win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x64000000
unix|win32-g++*:QMAKE_PKGCONFIG_REQUIRES = QtCore
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 7af71ccc8b..cfb141398c 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1877,7 +1877,7 @@ bool QAbstractSocket::waitForReadyRead(int msecs)
}
Q_ASSERT(d->socketEngine);
- forever {
+ do {
bool readyToRead = false;
bool readyToWrite = false;
if (!d->socketEngine->waitForReadOrWrite(&readyToRead, &readyToWrite, true, !d->writeBuffer.isEmpty(),
@@ -1904,7 +1904,7 @@ bool QAbstractSocket::waitForReadyRead(int msecs)
if (state() != ConnectedState)
return false;
- }
+ } while (qt_timeout_value(msecs, stopWatch.elapsed()) > 0);
return false;
}