diff options
Diffstat (limited to 'Tools/QtTestBrowser/webpage.h')
-rw-r--r-- | Tools/QtTestBrowser/webpage.h | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/Tools/QtTestBrowser/webpage.h b/Tools/QtTestBrowser/webpage.h index e62402b..3b856c9 100644 --- a/Tools/QtTestBrowser/webpage.h +++ b/Tools/QtTestBrowser/webpage.h @@ -33,9 +33,10 @@ #ifndef webpage_h #define webpage_h -#include <QFuture> +#include <QMutex> #include <QScopedPointer> #include <QThread> +#include <QWaitCondition> #include <qwebframe.h> #include <qwebpage.h> @@ -70,15 +71,16 @@ private: void applyProxy(); QString m_userAgent; bool m_interruptingJavaScriptEnabled; - QScopedPointer<QtNAMThread> m_qnamThread; + QtNAMThread* m_qnamThread; }; class QtNAMThread : public QThread { public: - QtNAMThread() + QtNAMThread(QObject *parent = 0) + : QThread(parent) + , m_qnam(0) { - m_qnamFuture.reportStarted(); } ~QtNAMThread() { @@ -86,20 +88,29 @@ public: wait(); } - QFuture<QNetworkAccessManager*> networkAccessManager() + QNetworkAccessManager* networkAccessManager() { - return m_qnamFuture.future(); + QMutexLocker lock(&m_mutex); + while (!m_qnam) + m_waitCondition.wait(&m_mutex); + return m_qnam; } protected: void run() { - QNetworkAccessManager qnam; - m_qnamFuture.reportResult(&qnam); - m_qnamFuture.reportFinished(); + Q_ASSERT(!m_qnam); + { + QMutexLocker lock(&m_mutex); + m_qnam = new QNetworkAccessManager; + m_waitCondition.wakeAll(); + } exec(); + delete m_qnam; } private: - QFutureInterface<QNetworkAccessManager*> m_qnamFuture; + QNetworkAccessManager* m_qnam; + QMutex m_mutex; + QWaitCondition m_waitCondition; }; #endif |