diff options
author | Gunnar Sletta <gunnar.sletta@jollamobile.com> | 2014-08-04 10:10:10 +0200 |
---|---|---|
committer | Gunnar Sletta <gunnar.sletta@jollamobile.com> | 2014-08-04 14:30:04 +0200 |
commit | 6a3d776671bc618fcc184779a8cc8e2d08e08278 (patch) | |
tree | db23658437ed5302824dafcff4ab9b2bf040ebcb /tests/auto/quick/scenegraph/tst_scenegraph.cpp | |
parent | a1dd62ce929a605febff8b7b5f0e29064555681b (diff) |
Speed up the test a bit..
Using hundreds of thousands of Items works, but it takes its
toll, so use a custom item to allocate QSGNodes directly which
are instantanous.
Change-Id: Iee5d8495b3d7d5abd24c14a53b2327e5efe9523b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Diffstat (limited to 'tests/auto/quick/scenegraph/tst_scenegraph.cpp')
-rw-r--r-- | tests/auto/quick/scenegraph/tst_scenegraph.cpp | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/tests/auto/quick/scenegraph/tst_scenegraph.cpp b/tests/auto/quick/scenegraph/tst_scenegraph.cpp index d510fdcda8..301174656c 100644 --- a/tests/auto/quick/scenegraph/tst_scenegraph.cpp +++ b/tests/auto/quick/scenegraph/tst_scenegraph.cpp @@ -45,14 +45,59 @@ #include <private/qopenglcontext_p.h> - #include <QtQml> +class PerPixelRect : public QQuickItem +{ + Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) + Q_OBJECT +public: + PerPixelRect() { + setFlag(ItemHasContents); + } + + void setColor(const QColor &c) { + if (c == m_color) + return; + m_color = c; + emit colorChanged(c); + } + + QColor color() const { return m_color; } + + QSGNode *updatePaintNode(QSGNode *old, UpdatePaintNodeData *) + { + if (old) + delete old; + + QSGNode *node = new QSGNode(); + + for (int y=0; y<height(); ++y) { + for (int x=0; x<width(); ++x) { + QSGSimpleRectNode *rn = new QSGSimpleRectNode(); + rn->setRect(x, y, 1, 1); + rn->setColor(m_color); + node->appendChildNode(rn); + } + } + + return node; + } + +Q_SIGNALS: + void colorChanged(const QColor &c ); + +private: + QColor m_color; +}; + class tst_SceneGraph : public QObject { Q_OBJECT private slots: + void initTestCase(); + void manyWindows_data(); void manyWindows(); @@ -67,6 +112,11 @@ public: ~ScopedList() { qDeleteAll(*this); } }; +void tst_SceneGraph::initTestCase() +{ + qmlRegisterType<PerPixelRect>("SceneGraphTest", 1, 0, "PerPixelRect"); +} + QQuickView *createView(const QString &file, QWindow *parent = 0, int x = -1, int y = -1, int w = -1, int h = -1) { QQuickView *view = new QQuickView(parent); |