Added explicit threading API to QtOpenGL.
authorSamuel Rødal <samuel.rodal@digia.com>
Mon, 26 Nov 2012 11:57:09 +0000 (12:57 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 30 Nov 2012 17:28:04 +0000 (18:28 +0100)
commit6385a182f0f93820c96cf274e50a56492491ee10
tree5772f4c8570e620448e3ab7473c9e2df5af4005a
parent3ee48926e6584b4afeda1fc406d19d7b1a8d6f20
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>
dist/changes-5.0.0
src/opengl/qgl.cpp
src/opengl/qgl.h
src/opengl/qgl_p.h
src/opengl/qgl_qpa.cpp
src/opengl/qglpaintdevice.cpp
src/opengl/qglpixelbuffer.cpp
src/opengl/qglpixelbuffer.h
src/opengl/qglpixelbuffer_p.h
tests/auto/opengl/qglthreads/qglthreads.pro
tests/auto/opengl/qglthreads/tst_qglthreads.cpp