diff options
Diffstat (limited to 'tests/auto/gui/qopengl')
-rw-r--r-- | tests/auto/gui/qopengl/tst_qopengl.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/auto/gui/qopengl/tst_qopengl.cpp b/tests/auto/gui/qopengl/tst_qopengl.cpp index 479c1c8e2e..a3e0cf4fba 100644 --- a/tests/auto/gui/qopengl/tst_qopengl.cpp +++ b/tests/auto/gui/qopengl/tst_qopengl.cpp @@ -42,6 +42,7 @@ #include <QtGui/private/qopenglcontext_p.h> #include <QtGui/QOpenGLFramebufferObject> +#include <QtGui/QOpenGLFunctions> #include <QtGui/QOpenGLPaintDevice> #include <QtGui/QPainter> #include <QtGui/QScreen> @@ -55,6 +56,7 @@ Q_OBJECT private slots: void sharedResourceCleanup(); + void multiGroupSharedResourceCleanup(); void fboSimpleRendering(); void fboRendering(); void fboHandleNulledAfterContextDestroyed(); @@ -172,6 +174,27 @@ void tst_QOpenGL::sharedResourceCleanup() QCOMPARE(tracker.destructorCalls, 1); } +void tst_QOpenGL::multiGroupSharedResourceCleanup() +{ + QWindow window; + window.setGeometry(0, 0, 10, 10); + window.create(); + + for (int i = 0; i < 10; ++i) { + QOpenGLContext *gl = new QOpenGLContext(); + gl->create(); + gl->makeCurrent(&window); + { + // Cause QOpenGLMultiGroupSharedResource instantiation. + QOpenGLFunctions func(gl); + } + delete gl; + // Cause context group's deleteLater() to be processed. + QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); + } + // Shouldn't crash when application exits. +} + static bool fuzzyComparePixels(const QRgb testPixel, const QRgb refPixel, const char* file, int line, int x = -1, int y = -1) { static int maxFuzz = 1; |