summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2016-02-03 12:42:52 +0100
committerLaszlo Agocs <laszlo.agocs@theqtcompany.com>2016-03-02 12:16:05 +0000
commit6b0a577bf85845780e9a7b101260cdf72fa1d33c (patch)
tree2ce5d8b2166c50024e648c3ef61ebcee7674bfa7 /src/gui/kernel
parent8f1fcb0142b26f8e12c51b6c646eca1242b35102 (diff)
Refactor initialization/caching code for versioned opengl functions
Saves around 80k in Qt Gui. Change-Id: I3f7068ae699136d0edf46a49694ade7e1df3c91d Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Diffstat (limited to 'src/gui/kernel')
-rw-r--r--src/gui/kernel/qopenglcontext.cpp24
-rw-r--r--src/gui/kernel/qopenglcontext.h4
-rw-r--r--src/gui/kernel/qopenglcontext_p.h2
3 files changed, 4 insertions, 26 deletions
diff --git a/src/gui/kernel/qopenglcontext.cpp b/src/gui/kernel/qopenglcontext.cpp
index a45217ca29..61324d73f3 100644
--- a/src/gui/kernel/qopenglcontext.cpp
+++ b/src/gui/kernel/qopenglcontext.cpp
@@ -661,8 +661,6 @@ void QOpenGLContext::destroy()
d->externalVersionFunctions.clear();
qDeleteAll(d->versionFunctions);
d->versionFunctions.clear();
- qDeleteAll(d->versionFunctionsBackend);
- d->versionFunctionsBackend.clear();
delete d->textureFunctions;
d->textureFunctions = 0;
@@ -1302,28 +1300,10 @@ QOpenGLContext *QOpenGLContext::globalShareContext()
/*!
\internal
*/
-QOpenGLVersionFunctionsBackend *QOpenGLContext::functionsBackend(const QOpenGLVersionFunctionsBackend::Version v) const
+QOpenGLVersionFunctionsStorage *QOpenGLContext::functionsBackendStorage() const
{
Q_D(const QOpenGLContext);
- return d->versionFunctionsBackend.value(v, 0);
-}
-
-/*!
- \internal
-*/
-void QOpenGLContext::insertFunctionsBackend(const QOpenGLVersionFunctionsBackend::Version v, QOpenGLVersionFunctionsBackend *backend)
-{
- Q_D(QOpenGLContext);
- d->versionFunctionsBackend.insert(v, backend);
-}
-
-/*!
- \internal
-*/
-void QOpenGLContext::removeFunctionsBackend(const QOpenGLVersionFunctionsBackend::Version v)
-{
- Q_D(QOpenGLContext);
- d->versionFunctionsBackend.remove(v);
+ return &d->versionFunctionsStorage;
}
/*!
diff --git a/src/gui/kernel/qopenglcontext.h b/src/gui/kernel/qopenglcontext.h
index 9bb48ab4fc..33e3f1c3f6 100644
--- a/src/gui/kernel/qopenglcontext.h
+++ b/src/gui/kernel/qopenglcontext.h
@@ -237,9 +237,7 @@ private:
void setQGLContextHandle(void *handle,void (*qGLContextDeleteFunction)(void *));
void deleteQGLContext();
- QOpenGLVersionFunctionsBackend* functionsBackend(QOpenGLVersionFunctionsBackend::Version v) const;
- void insertFunctionsBackend(const QOpenGLVersionFunctionsBackend::Version v, QOpenGLVersionFunctionsBackend *backend);
- void removeFunctionsBackend(const QOpenGLVersionFunctionsBackend::Version v);
+ QOpenGLVersionFunctionsStorage* functionsBackendStorage() const;
void insertExternalFunctions(QAbstractOpenGLFunctions *f);
void removeExternalFunctions(QAbstractOpenGLFunctions *f);
diff --git a/src/gui/kernel/qopenglcontext_p.h b/src/gui/kernel/qopenglcontext_p.h
index 57053a6d61..4a5fbab364 100644
--- a/src/gui/kernel/qopenglcontext_p.h
+++ b/src/gui/kernel/qopenglcontext_p.h
@@ -222,7 +222,7 @@ public:
}
mutable QHash<QOpenGLVersionProfile, QAbstractOpenGLFunctions *> versionFunctions;
- mutable QHash<QOpenGLVersionFunctionsBackend::Version, QOpenGLVersionFunctionsBackend *> versionFunctionsBackend;
+ mutable QOpenGLVersionFunctionsStorage versionFunctionsStorage;
mutable QSet<QAbstractOpenGLFunctions *> externalVersionFunctions;
void *qGLContextHandle;