Relax QOpenGLContext::swapBuffers() conditions.

There's no need to force the context to be current and the correct FBO
to be bound when swapBuffers() is called, as this can easily be handled
on a per-platform basis.

Change-Id: I7af5a082d6a2b03dfa2cdc874c27617139a781a9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
This commit is contained in:
Samuel Rødal 2012-11-08 13:32:07 +01:00 committed by The Qt Project
parent 96e3b44cdc
commit 15b5ed3294

View File

@ -561,11 +561,6 @@ QSurface *QOpenGLContext::surface() const
Call this to finish a frame of OpenGL rendering, and make sure to Call this to finish a frame of OpenGL rendering, and make sure to
call makeCurrent() again before you begin a new frame. call makeCurrent() again before you begin a new frame.
If you have bound a non-default framebuffer object, you need to
use bindDefaultFramebufferObject() to make sure that the default
framebuffer object is bound before calling swapBuffers(), as
some Qt platforms assume that the default framebuffer object is bound.
*/ */
void QOpenGLContext::swapBuffers(QSurface *surface) void QOpenGLContext::swapBuffers(QSurface *surface)
{ {
@ -594,17 +589,8 @@ void QOpenGLContext::swapBuffers(QSurface *surface)
return; return;
#if !defined(QT_NO_DEBUG) #if !defined(QT_NO_DEBUG)
if (currentContext() != this) if (!QOpenGLContextPrivate::toggleMakeCurrentTracker(this, false))
qWarning() << "QOpenGLContext::swapBuffers() called with non-current surface";
else if (!QOpenGLContextPrivate::toggleMakeCurrentTracker(this, false))
qWarning() << "QOpenGLContext::swapBuffers() called without corresponding makeCurrent()"; qWarning() << "QOpenGLContext::swapBuffers() called without corresponding makeCurrent()";
GLint framebufferBinding = 0;
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &framebufferBinding);
GLint platformFramebuffer = GLint(d->platformGLContext->defaultFramebufferObject(surfaceHandle));
if (framebufferBinding != platformFramebuffer)
qWarning() << "QOpenGLContext::swapBuffers() called with non-default framebuffer object bound";
#endif #endif
if (surface->format().swapBehavior() == QSurfaceFormat::SingleBuffer) if (surface->format().swapBehavior() == QSurfaceFormat::SingleBuffer)
glFlush(); glFlush();