From ddfa42c85b732972f819a2525293a90539d42d38 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 30 Apr 2013 13:06:44 -0500 Subject: 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 --- examples/quick/textureprovider/etcprovider.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'examples') diff --git a/examples/quick/textureprovider/etcprovider.cpp b/examples/quick/textureprovider/etcprovider.cpp index 52c2c17cfe..04545fe830 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); -- cgit v1.2.3