diff options
author | Charles Yin <charles.yin@nokia.com> | 2012-06-12 15:38:52 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-25 04:09:33 +0200 |
commit | 3e5d9532391549cc115f4cc6a824401acd2e8600 (patch) | |
tree | 7aae2f23dedff8471258336eb3deedf27cc7373a /src | |
parent | f22730a3390242c45fc4c8826b301606a7a7e1cb (diff) |
Add waitForRendering() function for qmltest
Change-Id: I6357412d84fdb4a8b6bd8603baba7d10a2bcc245
Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/testlib/TestCase.qml | 6 | ||||
-rw-r--r-- | src/imports/testlib/testcase.qdoc | 14 | ||||
-rw-r--r-- | src/qmltest/quicktest.cpp | 2 | ||||
-rw-r--r-- | src/qmltest/quicktestresult.cpp | 9 | ||||
-rw-r--r-- | src/qmltest/quicktestresult_p.h | 1 |
5 files changed, 29 insertions, 3 deletions
diff --git a/src/imports/testlib/TestCase.qml b/src/imports/testlib/TestCase.qml index ddd7f7030f..79c68a75a7 100644 --- a/src/imports/testlib/TestCase.qml +++ b/src/imports/testlib/TestCase.qml @@ -357,6 +357,12 @@ Item { qtest_results.wait(ms) } + function waitForRendering(item, timeout) { + if (timeout === undefined) + timeout = 5000 + return qtest_results.waitForRendering(item, timeout) + } + function sleep(ms) { qtest_results.sleep(ms) } diff --git a/src/imports/testlib/testcase.qdoc b/src/imports/testlib/testcase.qdoc index 8a0f770544..77cfae140e 100644 --- a/src/imports/testlib/testcase.qdoc +++ b/src/imports/testlib/testcase.qdoc @@ -474,7 +474,17 @@ Waits for \a ms milliseconds while processing Qt events. - \sa sleep() + \sa sleep(), waitForRendering() +*/ + +/*! + \qmlmethod TestCase::waitForRendering(item, timeout = 5000) + + Waits for \a timeout milliseconds or until the \a item is rendered by the renderer. + Returns true if \c item is rendered in \a timeout milliseconds, otherwise returns false. + The default \a timeout value is 5000. + + \sa sleep(), wait() */ /*! @@ -482,7 +492,7 @@ Sleeps for \a ms milliseconds without processing Qt events. - \sa wait() + \sa wait(), waitForRendering() */ /*! diff --git a/src/qmltest/quicktest.cpp b/src/qmltest/quicktest.cpp index ef026d4573..cfa503a113 100644 --- a/src/qmltest/quicktest.cpp +++ b/src/qmltest/quicktest.cpp @@ -147,7 +147,7 @@ void handleCompileErrors(const QFileInfo &fi, QQuickView *view) results.stopLogging(); } -static bool qWaitForSignal(QObject *obj, const char* signal, int timeout = 5000) +bool qWaitForSignal(QObject *obj, const char* signal, int timeout = 5000) { QSignalSpy spy(obj, signal); QElapsedTimer timer; diff --git a/src/qmltest/quicktestresult.cpp b/src/qmltest/quicktestresult.cpp index f6fd873011..751ee9e6f4 100644 --- a/src/qmltest/quicktestresult.cpp +++ b/src/qmltest/quicktestresult.cpp @@ -65,6 +65,8 @@ static const char *globalProgramName = 0; static bool loggingStarted = false; static QBenchmarkGlobalData globalBenchmarkData; +extern bool qWaitForSignal(QObject *obj, const char* signal, int timeout = 5000); + class Q_QUICK_TEST_EXPORT QuickTestImageObject : public QObject { Q_OBJECT @@ -573,6 +575,13 @@ void QuickTestResult::sleep(int ms) QTest::qSleep(ms); } +bool QuickTestResult::waitForRendering(QQuickItem *item, int timeout) +{ + Q_ASSERT(item); + + return qWaitForSignal(item->canvas(), SIGNAL(frameSwapped()), timeout); +} + void QuickTestResult::startMeasurement() { Q_D(QuickTestResult); diff --git a/src/qmltest/quicktestresult_p.h b/src/qmltest/quicktestresult_p.h index 0ef41ade29..448f2da954 100644 --- a/src/qmltest/quicktestresult_p.h +++ b/src/qmltest/quicktestresult_p.h @@ -132,6 +132,7 @@ public Q_SLOTS: void wait(int ms); void sleep(int ms); + bool waitForRendering(QQuickItem *item, int timeout = 5000); void startMeasurement(); void beginDataRun(); |