Commit ddfa42c8 authored by Michael Brasser's avatar Michael Brasser Committed by The Qt Project
Browse files

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: default avatarGunnar Sletta <gunnar.sletta@digia.com>
parent 9d6cd723
No related merge requests found
Showing with 6 additions and 0 deletions
......@@ -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);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment