Get rid of unused convenience class in QtOpenGL.
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>
This commit is contained in:
parent
30774e9552
commit
1ff94e3148
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user