summaryrefslogtreecommitdiffstats
path: root/src/gui/opengl/qopenglfunctions_4_5_core.cpp
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/opengl/qopenglfunctions_4_5_core.cpp
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/opengl/qopenglfunctions_4_5_core.cpp')
-rw-r--r--src/gui/opengl/qopenglfunctions_4_5_core.cpp198
1 files changed, 54 insertions, 144 deletions
diff --git a/src/gui/opengl/qopenglfunctions_4_5_core.cpp b/src/gui/opengl/qopenglfunctions_4_5_core.cpp
index be08a76a69..2fdb9ef855 100644
--- a/src/gui/opengl/qopenglfunctions_4_5_core.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_5_core.cpp
@@ -90,78 +90,60 @@ QOpenGLFunctions_4_5_Core::QOpenGLFunctions_4_5_Core()
QOpenGLFunctions_4_5_Core::~QOpenGLFunctions_4_5_Core()
{
- if (d_1_0_Core && !d_1_0_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
- delete d_1_0_Core;
- }
- if (d_1_1_Core && !d_1_1_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus());
- delete d_1_1_Core;
- }
- if (d_1_2_Core && !d_1_2_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus());
- delete d_1_2_Core;
- }
- if (d_1_3_Core && !d_1_3_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus());
- delete d_1_3_Core;
- }
- if (d_1_4_Core && !d_1_4_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus());
- delete d_1_4_Core;
- }
- if (d_1_5_Core && !d_1_5_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus());
- delete d_1_5_Core;
- }
- if (d_2_0_Core && !d_2_0_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus());
- delete d_2_0_Core;
- }
- if (d_2_1_Core && !d_2_1_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus());
- delete d_2_1_Core;
- }
- if (d_3_0_Core && !d_3_0_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus());
- delete d_3_0_Core;
- }
- if (d_3_1_Core && !d_3_1_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus());
- delete d_3_1_Core;
- }
- if (d_3_2_Core && !d_3_2_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus());
- delete d_3_2_Core;
- }
- if (d_3_3_Core && !d_3_3_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus());
- delete d_3_3_Core;
- }
- if (d_4_0_Core && !d_4_0_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_0_Core->context, QOpenGLFunctions_4_0_CoreBackend::versionStatus());
- delete d_4_0_Core;
- }
- if (d_4_1_Core && !d_4_1_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_1_Core->context, QOpenGLFunctions_4_1_CoreBackend::versionStatus());
- delete d_4_1_Core;
- }
- if (d_4_2_Core && !d_4_2_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_2_Core->context, QOpenGLFunctions_4_2_CoreBackend::versionStatus());
- delete d_4_2_Core;
- }
- if (d_4_3_Core && !d_4_3_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_3_Core->context, QOpenGLFunctions_4_3_CoreBackend::versionStatus());
- delete d_4_3_Core;
- }
- if (d_4_4_Core && !d_4_4_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_4_Core->context, QOpenGLFunctions_4_4_CoreBackend::versionStatus());
- delete d_4_4_Core;
- }
- if (d_4_5_Core && !d_4_5_Core->refs.deref()) {
- QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_5_Core->context, QOpenGLFunctions_4_5_CoreBackend::versionStatus());
- delete d_4_5_Core;
- }
+ if (d_1_0_Core)
+ d_1_0_Core->refs.deref();
+ Q_ASSERT(d_1_0_Core->refs.load());
+ if (d_1_1_Core)
+ d_1_1_Core->refs.deref();
+ Q_ASSERT(d_1_1_Core->refs.load());
+ if (d_1_2_Core)
+ d_1_2_Core->refs.deref();
+ Q_ASSERT(d_1_2_Core->refs.load());
+ if (d_1_3_Core)
+ d_1_3_Core->refs.deref();
+ Q_ASSERT(d_1_3_Core->refs.load());
+ if (d_1_4_Core)
+ d_1_4_Core->refs.deref();
+ Q_ASSERT(d_1_4_Core->refs.load());
+ if (d_1_5_Core)
+ d_1_5_Core->refs.deref();
+ Q_ASSERT(d_1_5_Core->refs.load());
+ if (d_2_0_Core)
+ d_2_0_Core->refs.deref();
+ Q_ASSERT(d_2_0_Core->refs.load());
+ if (d_2_1_Core)
+ d_2_1_Core->refs.deref();
+ Q_ASSERT(d_2_1_Core->refs.load());
+ if (d_3_0_Core)
+ d_3_0_Core->refs.deref();
+ Q_ASSERT(d_3_0_Core->refs.load());
+ if (d_3_1_Core)
+ d_3_1_Core->refs.deref();
+ Q_ASSERT(d_3_1_Core->refs.load());
+ if (d_3_2_Core)
+ d_3_2_Core->refs.deref();
+ Q_ASSERT(d_3_2_Core->refs.load());
+ if (d_3_3_Core)
+ d_3_3_Core->refs.deref();
+ Q_ASSERT(d_3_3_Core->refs.load());
+ if (d_4_0_Core)
+ d_4_0_Core->refs.deref();
+ Q_ASSERT(d_4_0_Core->refs.load());
+ if (d_4_1_Core)
+ d_4_1_Core->refs.deref();
+ Q_ASSERT(d_4_1_Core->refs.load());
+ if (d_4_2_Core)
+ d_4_2_Core->refs.deref();
+ Q_ASSERT(d_4_2_Core->refs.load());
+ if (d_4_3_Core)
+ d_4_3_Core->refs.deref();
+ Q_ASSERT(d_4_3_Core->refs.load());
+ if (d_4_4_Core)
+ d_4_4_Core->refs.deref();
+ Q_ASSERT(d_4_4_Core->refs.load());
+ if (d_4_5_Core)
+ d_4_5_Core->refs.deref();
+ Q_ASSERT(d_4_5_Core->refs.load());
}
bool QOpenGLFunctions_4_5_Core::initializeOpenGLFunctions()
@@ -180,146 +162,74 @@ bool QOpenGLFunctions_4_5_Core::initializeOpenGLFunctions()
// Function pointers in the backends are resolved at creation time
QOpenGLVersionFunctionsBackend* d = 0;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_1_0_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d);
- }
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_1_1_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d);
- }
d_1_1_Core = static_cast<QOpenGLFunctions_1_1_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_1_2_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d);
- }
d_1_2_Core = static_cast<QOpenGLFunctions_1_2_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_1_3_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d);
- }
d_1_3_Core = static_cast<QOpenGLFunctions_1_3_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_1_4_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d);
- }
d_1_4_Core = static_cast<QOpenGLFunctions_1_4_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_1_5_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d);
- }
d_1_5_Core = static_cast<QOpenGLFunctions_1_5_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_2_0_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d);
- }
d_2_0_Core = static_cast<QOpenGLFunctions_2_0_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_2_1_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d);
- }
d_2_1_Core = static_cast<QOpenGLFunctions_2_1_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_3_0_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d);
- }
d_3_0_Core = static_cast<QOpenGLFunctions_3_0_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_3_1_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d);
- }
d_3_1_Core = static_cast<QOpenGLFunctions_3_1_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_3_2_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d);
- }
d_3_2_Core = static_cast<QOpenGLFunctions_3_2_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_3_3_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d);
- }
d_3_3_Core = static_cast<QOpenGLFunctions_3_3_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_4_0_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus(), d);
- }
d_4_0_Core = static_cast<QOpenGLFunctions_4_0_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_4_1_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus(), d);
- }
d_4_1_Core = static_cast<QOpenGLFunctions_4_1_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_2_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_4_2_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_2_CoreBackend::versionStatus(), d);
- }
d_4_2_Core = static_cast<QOpenGLFunctions_4_2_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_3_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_4_3_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_3_CoreBackend::versionStatus(), d);
- }
d_4_3_Core = static_cast<QOpenGLFunctions_4_3_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_4_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_4_4_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_4_CoreBackend::versionStatus(), d);
- }
d_4_4_Core = static_cast<QOpenGLFunctions_4_4_CoreBackend*>(d);
d->refs.ref();
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_5_CoreBackend::versionStatus());
- if (!d) {
- d = new QOpenGLFunctions_4_5_CoreBackend(context);
- QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_5_CoreBackend::versionStatus(), d);
- }
d_4_5_Core = static_cast<QOpenGLFunctions_4_5_CoreBackend*>(d);
d->refs.ref();