summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/qopengl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/gui/qopengl')
-rw-r--r--tests/auto/gui/qopengl/tst_qopengl.cpp23
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;