diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2012-01-04 14:17:45 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-05 02:17:04 +0100 |
commit | 07edbd23ed774c4f0331bb92d35add77fe91769c (patch) | |
tree | 68ae5318d26799949b90d13ab01ceb400dc27fa9 /src | |
parent | 8ed53babb9713103bdfd70659b147c89c711c6da (diff) |
Introduced QOpenGLContext::aboutToBeDestroyed() signal.
This signal can be used to clean up OpenGL resources in a safe way
before the context is destroyed.
Task-number: QTBUG-20083
Change-Id: I45a4be01b06af4ee7196fa502116f099d50afeab
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/kernel/qopenglcontext.cpp | 13 | ||||
-rw-r--r-- | src/gui/kernel/qopenglcontext.h | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/gui/kernel/qopenglcontext.cpp b/src/gui/kernel/qopenglcontext.cpp index 6a9cb43028..29a9e92e5c 100644 --- a/src/gui/kernel/qopenglcontext.cpp +++ b/src/gui/kernel/qopenglcontext.cpp @@ -174,6 +174,8 @@ bool QOpenGLContext::create() void QOpenGLContext::destroy() { Q_D(QOpenGLContext); + if (d->platformGLContext) + emit aboutToBeDestroyed(); if (QOpenGLContext::currentContext() == this) doneCurrent(); if (d->shareGroup) @@ -186,6 +188,17 @@ void QOpenGLContext::destroy() } /*! + \fn void QOpenGLContext::aboutToBeDestroyed() + + This signal is emitted before the underlying native OpenGL context is + destroyed, such that users may clean up OpenGL resources that might otherwise + be left dangling in the case of shared OpenGL contexts. + + If you wish to make the context current in order to do clean-up, make sure to + only connect to the signal using a direct connection. +*/ + +/*! If this is the current context for the thread, doneCurrent is called */ QOpenGLContext::~QOpenGLContext() diff --git a/src/gui/kernel/qopenglcontext.h b/src/gui/kernel/qopenglcontext.h index b5a19a0ebc..0d02cfe613 100644 --- a/src/gui/kernel/qopenglcontext.h +++ b/src/gui/kernel/qopenglcontext.h @@ -118,6 +118,9 @@ public: QOpenGLFunctions *functions() const; +Q_SIGNALS: + void aboutToBeDestroyed(); + private: friend class QGLContext; friend class QOpenGLContextResourceBase; |