]> git.cworth.org Git - apitrace/commitdiff
glstate: Don't dump garbage when glReadPixels fail.
authorJosé Fonseca <jfonseca@vmware.com>
Fri, 10 May 2013 20:44:07 +0000 (21:44 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Fri, 10 May 2013 20:54:30 +0000 (21:54 +0100)
retrace/glstate_images.cpp

index b95b8cc2411e0f97ed19ad1d5c795588fc10e947..f0b4eddb15d3bdded2a3e3efaefe4c782dd2d609 100644 (file)
@@ -890,6 +890,8 @@ dumpReadBufferImage(JSONWriter &json, GLint width, GLint height, GLenum format,
 
     image::Image *image = new image::Image(width, height, channels, true);
 
+    while (glGetError() != GL_NO_ERROR) {}
+
     // TODO: reset imaging state too
     context.resetPixelPackState();
 
@@ -897,7 +899,16 @@ dumpReadBufferImage(JSONWriter &json, GLint width, GLint height, GLenum format,
 
     context.restorePixelPackState();
 
-    json.writeImage(image, formatToString(internalFormat));
+    GLenum error = glGetError();
+    if (error != GL_NO_ERROR) {
+        do {
+            std::cerr << "warning: " << enumToString(error) << " while reading framebuffer\n";
+            error = glGetError();
+        } while(error != GL_NO_ERROR);
+        json.writeNull();
+    } else {
+        json.writeImage(image, formatToString(internalFormat));
+    }
 
     delete image;
 }