diff options
Diffstat (limited to 'tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp | 64 |
1 files changed, 57 insertions, 7 deletions
diff --git a/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp b/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp index 2ac31bfe1b..e9f9c67856 100644 --- a/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp +++ b/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp @@ -1,7 +1,7 @@ /**************************************************************************** ** -** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. ** @@ -10,9 +10,9 @@ ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser @@ -23,8 +23,8 @@ ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** $QT_END_LICENSE$ @@ -55,6 +55,8 @@ private slots: void reparentToAlreadyCreated(); void reparentToNotYetCreated(); void asViewport(); + void requestUpdate(); + void fboRedirect(); }; void tst_QOpenGLWidget::create() @@ -305,6 +307,54 @@ void tst_QOpenGLWidget::asViewport() QVERIFY(view->paintCount() == 0); } +class PaintCountWidget : public QOpenGLWidget +{ +public: + PaintCountWidget() : m_count(0) { } + void reset() { m_count = 0; } + void paintGL() Q_DECL_OVERRIDE { ++m_count; } + int m_count; +}; + +void tst_QOpenGLWidget::requestUpdate() +{ + PaintCountWidget w; + w.resize(640, 480); + w.show(); + QTest::qWaitForWindowExposed(&w); + + w.reset(); + QCOMPARE(w.m_count, 0); + + w.windowHandle()->requestUpdate(); + QTRY_VERIFY(w.m_count > 0); +} + +class FboCheckWidget : public QOpenGLWidget +{ +public: + void paintGL() Q_DECL_OVERRIDE { + GLuint reportedDefaultFbo = QOpenGLContext::currentContext()->defaultFramebufferObject(); + GLuint expectedDefaultFbo = defaultFramebufferObject(); + QCOMPARE(reportedDefaultFbo, expectedDefaultFbo); + } +}; + +void tst_QOpenGLWidget::fboRedirect() +{ + FboCheckWidget w; + w.resize(640, 480); + w.show(); + QTest::qWaitForWindowExposed(&w); + + // Unlike in paintGL(), the default fbo reported by the context is not affected by the widget, + // so we get the real default fbo: either 0 or (on iOS) the fbo associated with the window. + w.makeCurrent(); + GLuint reportedDefaultFbo = QOpenGLContext::currentContext()->defaultFramebufferObject(); + GLuint widgetFbo = w.defaultFramebufferObject(); + QVERIFY(reportedDefaultFbo != widgetFbo); +} + QTEST_MAIN(tst_QOpenGLWidget) #include "tst_qopenglwidget.moc" |