diff options
author | Rhys Weatherley <rhys.weatherley@nokia.com> | 2009-07-22 03:51:38 (GMT) |
---|---|---|
committer | Rhys Weatherley <rhys.weatherley@nokia.com> | 2009-07-22 03:51:38 (GMT) |
commit | 96ee22d27e3f7c54ae622a956435bfc84cdb0e90 (patch) | |
tree | 824bd84a09c278c1215345a2d44ea39fec667a7a /src/opengl/gl2paintengineex/qglengineshadermanager.cpp | |
parent | d0a4c6ab4d801b8b02638324505b29dbaa822f5c (diff) | |
parent | 5be62fbd822206c625cab4892ab485923dc79a00 (diff) | |
download | Qt-96ee22d27e3f7c54ae622a956435bfc84cdb0e90.zip Qt-96ee22d27e3f7c54ae622a956435bfc84cdb0e90.tar.gz Qt-96ee22d27e3f7c54ae622a956435bfc84cdb0e90.tar.bz2 |
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt
Diffstat (limited to 'src/opengl/gl2paintengineex/qglengineshadermanager.cpp')
-rw-r--r-- | src/opengl/gl2paintengineex/qglengineshadermanager.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp index 27636f4..d7c91b8 100644 --- a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp +++ b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp @@ -49,6 +49,28 @@ QT_BEGIN_NAMESPACE +static void QGLEngineShaderManager_free(void *ptr) +{ + delete reinterpret_cast<QGLEngineShaderManager *>(ptr); +} + +Q_GLOBAL_STATIC_WITH_ARGS(QGLContextResource, qt_shader_managers, (QGLEngineShaderManager_free)) + +QGLEngineShaderManager *QGLEngineShaderManager::managerForContext(const QGLContext *context) +{ + QGLEngineShaderManager *p = reinterpret_cast<QGLEngineShaderManager *>(qt_shader_managers()->value(context)); + if (!p) { + QGLContext *oldContext = const_cast<QGLContext *>(QGLContext::currentContext()); + if (oldContext != context) + const_cast<QGLContext *>(context)->makeCurrent(); + p = new QGLEngineShaderManager(const_cast<QGLContext *>(context)); + qt_shader_managers()->insert(context, p); + if (oldContext && oldContext != context) + oldContext->makeCurrent(); + } + return p; +} + const char* QGLEngineShaderManager::qglEngineShaderSourceCode[] = { 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, |