diff options
Diffstat (limited to 'src/opengl/qopenglversionfunctions.cpp')
-rw-r--r-- | src/opengl/qopenglversionfunctions.cpp | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/opengl/qopenglversionfunctions.cpp b/src/opengl/qopenglversionfunctions.cpp index 61794fdec9..64d9d11218 100644 --- a/src/opengl/qopenglversionfunctions.cpp +++ b/src/opengl/qopenglversionfunctions.cpp @@ -68,19 +68,12 @@ QOpenGLContextVersionData::~QOpenGLContextVersionData() QOpenGLContextVersionData *QOpenGLContextVersionData::forContext(QOpenGLContext *context) { - auto *data = contextData.value(context); - if (!data) { - data = new QOpenGLContextVersionData; - // The data will live as long as the context. It could potentially be an opaque pointer - // member of QOpenGLContextPrivate, but this avoids polluting QOpenGLContext with version - // functions specifics - QObject::connect(context, &QObject::destroyed, context, [data](){ delete data; }, Qt::DirectConnection); - contextData[context] = data; - } - return data; -} + QOpenGLContextPrivate *context_d = QOpenGLContextPrivate::get(context); + if (context_d->versionFunctions == nullptr) + context_d->versionFunctions = new QOpenGLContextVersionData; -QMap<QOpenGLContext *, QOpenGLContextVersionData *> QOpenGLContextVersionData::contextData; + return static_cast<QOpenGLContextVersionData *>(context_d->versionFunctions); +} #define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1 #define QT_OPENGL_FUNCTION_NAMES(ret, name, args) \ |