diff options
author | Samuel Rødal <samuel.rodal@digia.com> | 2012-11-26 12:57:09 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-30 18:28:04 +0100 |
commit | 6385a182f0f93820c96cf274e50a56492491ee10 (patch) | |
tree | 5772f4c8570e620448e3ab7473c9e2df5af4005a /dist/changes-5.0.0 | |
parent | 3ee48926e6584b4afeda1fc406d19d7b1a8d6f20 (diff) |
Added explicit threading API to QtOpenGL.
Since QtOpenGL/QGLContext is implemented in terms of
QtGui/QOpenGLContext which has stricter requirements about how it's
supposed to be used, we need to apply these requirements to QGLContext
as well.
This change adds QGLContext::moveToThread(QThread *) and documents it as
a necessity for making a context current on another thread.
Also introduces QGLPixelbuffer::context() to access the QGLContext of a
pixelbuffer, and made QGLWidget::context() return a non-const
QGLContext, since there's no good reason why it shouldn't, and it leads
to less const_cast clutter.
We could have introduced a backdoor in QOpenGLContext instead, making it
loosen its requirements, but that would have made it harder / impossible
to fully support threaded OpenGL in all the platforms.
Task-number: QTBUG-22560
Change-Id: Ibb6f65f342e7c963e80cc42ab5664c5f1cab30b0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'dist/changes-5.0.0')
-rw-r--r-- | dist/changes-5.0.0 | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0 index 056b7506f0..c76f216fb5 100644 --- a/dist/changes-5.0.0 +++ b/dist/changes-5.0.0 @@ -676,6 +676,15 @@ QtOpenGL which were deprecated in Qt 4 have been removed. * Previously deprecated default value listBase parameter has been removed from both QGLWidget::renderText() functions. +* In order to ensure support on more platforms, stricter requirements have been + introduced for doing threaded OpenGL. First, you must call makeCurrent() at + least once per swapBuffers() call, so that the platform has a chance to + synchronize resizes to the OpenGL surface. Second, before doing makeCurrent() + or swapBuffers() in a separate thread, you must call + QGLContext::moveToThread(QThread *) to explicitly let Qt know in which thread + a QGLContext is currently being used. You also need to make sure that the + context is not current in the current thread before moving it to a different + thread. QtScript -------- |