summaryrefslogtreecommitdiff
path: root/src/mbgl/platform
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-12-10 13:46:26 +0100
committerKonstantin Käfer <mail@kkaefer.com>2014-12-10 13:46:26 +0100
commit4ad28c931aaf930afd7dace5805578acc4915e1f (patch)
treea7e897030647057d37be01f6ade37e3d7e8ea8b4 /src/mbgl/platform
parent93d56294cf6f7af39679a871f51087be34f813a2 (diff)
downloadqtlocation-mapboxgl-4ad28c931aaf930afd7dace5805578acc4915e1f.tar.gz
only report STACK_OVERFLOW/STACK_UNDERFLOW when the GL implementation has them
Diffstat (limited to 'src/mbgl/platform')
-rw-r--r--src/mbgl/platform/gl.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/mbgl/platform/gl.cpp b/src/mbgl/platform/gl.cpp
index e766ac3310..95fad969f7 100644
--- a/src/mbgl/platform/gl.cpp
+++ b/src/mbgl/platform/gl.cpp
@@ -75,8 +75,8 @@ PFNGLPROGRAMBINARYPROC ProgramBinary = nullptr;
PFNGLPROGRAMPARAMETERIPROC ProgramParameteri = nullptr;
void checkError(const char *cmd, const char *file, int line) {
- GLenum err;
- while ((err = glGetError()) != GL_NO_ERROR) {
+ const GLenum err = glGetError();
+ if (err != GL_NO_ERROR) {
const char *error = nullptr;
switch (err) {
case GL_INVALID_ENUM: error = "INVALID_ENUM"; break;
@@ -84,13 +84,16 @@ void checkError(const char *cmd, const char *file, int line) {
case GL_INVALID_OPERATION: error = "INVALID_OPERATION"; break;
case GL_INVALID_FRAMEBUFFER_OPERATION: error = "INVALID_FRAMEBUFFER_OPERATION"; break;
case GL_OUT_OF_MEMORY: error = "OUT_OF_MEMORY"; break;
+#ifdef GL_STACK_UNDERFLOW
case GL_STACK_UNDERFLOW: error = "STACK_UNDERFLOW"; break;
+#endif
+#ifdef GL_STACK_OVERFLOW
case GL_STACK_OVERFLOW: error = "STACK_OVERFLOW"; break;
+#endif
default: error = "(unknown)"; break;
}
- mbgl::Log::Error(mbgl::Event::OpenGL, "%s: Error GL_%s (0x%04X) - %s:%i", cmd, error, err, file, line);
- exit(1);
+ throw ::mbgl::gl::Error(err, std::string(cmd) + ": Error GL_" + error + " - " + file + ":" + std::to_string(line));
}
}