Get rid of unused convenience class in QtOpenGL.
authorSamuel Rødal <samuel.rodal@nokia.com>
Tue, 16 Aug 2011 07:28:01 +0000 (09:28 +0200)
committerJørgen Lind <jorgen.lind@nokia.com>
Tue, 16 Aug 2011 11:53:13 +0000 (13:53 +0200)
QGLContextResource is no longer used, QGLContextGroupResource should be
preferable in all situations.

Change-Id: I7c7b90686959ced9fa34e278ef5747a7c49a5b03
Reviewed-on: http://codereview.qt.nokia.com/3005
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
src/opengl/qgl.cpp
src/opengl/qgl_p.h
src/opengl/qglfunctions.cpp

index d045bf5..4f9f5a9 100644 (file)
@@ -2105,10 +2105,6 @@ QGLContext::~QGLContext()
 
 void QGLContextPrivate::cleanup()
 {
-    QHash<QGLContextResourceBase *, void *>::ConstIterator it;
-    for (it = m_resources.begin(); it != m_resources.end(); ++it)
-        it.key()->freeResource(it.value());
-    m_resources.clear();
 }
 
 #define ctx q_ptr
index f2590e8..f418008 100644 (file)
@@ -433,7 +433,6 @@ public:
     GLuint current_fbo;
     GLuint default_fbo;
     QPaintEngine *active_engine;
-    QHash<QGLContextResourceBase *, void *> m_resources;
     QGLTextureDestroyer *texture_destroyer;
 
     QGLFunctions *functions;
@@ -739,69 +738,6 @@ protected:
     }
 };
 
-/*
-   Base for resources that are context specific.
-*/
-class Q_OPENGL_EXPORT QGLContextResourceBase
-{
-public:
-    virtual ~QGLContextResourceBase() {
-        for (int i = 0; i < m_contexts.size(); ++i)
-            m_contexts.at(i)->d_ptr->m_resources.remove(this);
-    }
-
-    void insert(const QGLContext *context, void *value) {
-        context->d_ptr->m_resources.insert(this, value);
-    }
-
-    void *value(const QGLContext *context) {
-        return context->d_ptr->m_resources.value(this, 0);
-    }
-    virtual void freeResource(void *value) = 0;
-
-protected:
-    QList<const QGLContext *> m_contexts;
-};
-
-/*
-   The QGLContextResource template is used to manage a resource for a
-   single GL context. Just before the context is destroyed (while it's
-   still the current context), or when the QGLContextResource object
-   itself is destroyed (implies potential context switches), the
-   resource will be freed.  The class used as the template class type
-   needs to have a constructor with the following signature: T(const
-   QGLContext *);
-*/
-template <class T>
-class QGLContextResource : public QGLContextResourceBase
-{
-public:
-    ~QGLContextResource() {
-        for (int i = 0; i < m_contexts.size(); ++i) {
-            const QGLContext *context = m_contexts.at(i);
-            T *resource = reinterpret_cast<T *>(QGLContextResourceBase::value(context));
-            if (resource) {
-                QGLShareContextScope scope(context);
-                delete resource;
-            }
-        }
-    }
-
-    T *value(const QGLContext *context) {
-        T *resource = reinterpret_cast<T *>(QGLContextResourceBase::value(context));
-        if (!resource) {
-            resource = new T(context);
-            insert(context, resource);
-        }
-        return resource;
-    }
-
-protected:
-    void freeResource(void *resource) {
-        delete reinterpret_cast<T *>(resource);
-    }
-};
-
 // Put a guard around a GL object identifier and its context.
 // When the context goes away, a shared context will be used
 // in its place.  If there are no more shared contexts, then
index 02e7091..48549fb 100644 (file)
@@ -148,16 +148,8 @@ struct QGLFunctionsPrivateEx : public QGLFunctionsPrivate
     int m_features;
 };
 
-#if QT_VERSION >= 0x040800
 Q_GLOBAL_STATIC(QGLContextGroupResource<QGLFunctionsPrivateEx>, qt_gl_functions_resource)
-#else
-static void qt_gl_functions_free(void *data)
-{
-    delete reinterpret_cast<QGLFunctionsPrivateEx *>(data);
-}
 
-Q_GLOBAL_STATIC_WITH_ARGS(QGLContextResource, qt_gl_functions_resource, (qt_gl_functions_free))
-#endif
 static QGLFunctionsPrivateEx *qt_gl_functions(const QGLContext *context = 0)
 {
     if (!context)