summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-11-24 03:32:18 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-11-24 03:32:18 (GMT)
commit236e57bc9d85c4b05514dd3b792bf8e144320023 (patch)
tree84ffaf917021ca2229b32662884af889eba7994e /tests
parentd0f74ae9712b2225c12c95891357c5f93c30996c (diff)
parent789e2e08d8969aaebae82f45d48f3d550c8c1d64 (diff)
downloadQt-236e57bc9d85c4b05514dd3b792bf8e144320023.zip
Qt-236e57bc9d85c4b05514dd3b792bf8e144320023.tar.gz
Qt-236e57bc9d85c4b05514dd3b792bf8e144320023.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: tst_qthread: fix compilation Round origin of text in OpenVG engine QThread::exec(): Fix possibility to enter several time the event loop QMessageBox: change the documentation to reflect that it is application modal Compile on OpenBSD Doc: Q_PROPERTY, implements the setter/getter in the example Dynamically register the event number. Fix wrong error assumption when converting "0.0" to double
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qthread/tst_qthread.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp
index 843749a..b0efb5a 100644
--- a/tests/auto/qthread/tst_qthread.cpp
+++ b/tests/auto/qthread/tst_qthread.cpp
@@ -106,6 +106,7 @@ private slots:
void adoptMultipleThreads();
void QTBUG13810_exitAndStart();
+ void QTBUG15378_exitAndExec();
void stressTest();
};
@@ -976,5 +977,45 @@ void tst_QThread::QTBUG13810_exitAndStart()
}
+void tst_QThread::QTBUG15378_exitAndExec()
+{
+ class Thread : public QThread {
+ public:
+ QSemaphore sem1;
+ QSemaphore sem2;
+ volatile int value;
+ void run() {
+ sem1.acquire();
+ value = exec(); //First entrence
+ sem2.release();
+ value = exec(); // Second loop
+ }
+ };
+ Thread thread;
+ thread.value = 0;
+ thread.start();
+ thread.exit(556);
+ thread.sem1.release(); //should exit the first loop
+ thread.sem2.acquire();
+ int v = thread.value;
+ QCOMPARE(v, 556);
+
+ //test that the thread is running by executing queued connected signal there
+ Syncronizer sync1;
+ sync1.moveToThread(&thread);
+ Syncronizer sync2;
+ sync2.moveToThread(&thread);
+ connect(&sync2, SIGNAL(propChanged(int)), &sync1, SLOT(setProp(int)), Qt::QueuedConnection);
+ connect(&sync1, SIGNAL(propChanged(int)), &thread, SLOT(quit()), Qt::QueuedConnection);
+ QMetaObject::invokeMethod(&sync2, "setProp", Qt::QueuedConnection , Q_ARG(int, 89));
+ QTest::qWait(50);
+ while(!thread.wait(10))
+ QTest::qWait(10);
+ QCOMPARE(sync2.m_prop, 89);
+ QCOMPARE(sync1.m_prop, 89);
+}
+
+
+
QTEST_MAIN(tst_QThread)
#include "tst_qthread.moc"