From: Michael Brasser Date: Tue, 30 Apr 2013 18:06:44 +0000 (-0500) Subject: Better handle GL errors in EtcTexture::bind(). X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=ddfa42c85b732972f819a2525293a90539d42d38;p=konrad%2Fqtdeclarative.git Better handle GL errors in EtcTexture::bind(). The scenegraph as a whole does not typically do GL error checking. That means GL errors occurring elsewhere could cause the etcprovider to unload textures that loaded correctly. Change-Id: Ic8e0caa62dab50b391e226cf0a493bc7e357dc46 Reviewed-by: Gunnar Sletta --- diff --git a/examples/quick/textureprovider/etcprovider.cpp b/examples/quick/textureprovider/etcprovider.cpp index 52c2c17..04545fe 100644 --- a/examples/quick/textureprovider/etcprovider.cpp +++ b/examples/quick/textureprovider/etcprovider.cpp @@ -121,6 +121,10 @@ void EtcTexture::bind() "paddedWidth: " << m_paddedSize.width() << "paddedHeight: " << m_paddedSize.height(); #endif +#ifndef QT_NO_DEBUG + while (glGetError() != GL_NO_ERROR) { } +#endif + QOpenGLContext *ctx = QOpenGLContext::currentContext(); Q_ASSERT(ctx != 0); ctx->functions()->glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_ETC1_RGB8_OES, @@ -128,6 +132,7 @@ void EtcTexture::bind() (m_paddedSize.width() * m_paddedSize.height()) >> 1, m_data.data() + 16); +#ifndef QT_NO_DEBUG // Gracefully fail in case of an error... GLuint error = glGetError(); if (error != GL_NO_ERROR) { @@ -137,6 +142,7 @@ void EtcTexture::bind() m_texture_id = 0; return; } +#endif m_uploaded = true; updateBindOptions(true);