summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2015-08-31 11:18:19 +0100
committerMichael Meeks <michael.meeks@collabora.com>2015-08-31 11:20:12 +0100
commit884bea629dc61d73ae1f0af6d55ee37df035c8de (patch)
tree1d6c762042ddaddf8e092cdb5bc8e602a4179107
parent7221c817e0d6b520abeacf66050d1c6801a2add8 (diff)
tdf#93798 - avoid apitrace provoked infinite loop dumping errors.
Change-Id: I6c42e6a9ead90ed6fad2f289cd686a72cffa0c2d
-rw-r--r--vcl/source/opengl/OpenGLHelper.cxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/vcl/source/opengl/OpenGLHelper.cxx b/vcl/source/opengl/OpenGLHelper.cxx
index 87fec55fb3e9..68b8d50ca70c 100644
--- a/vcl/source/opengl/OpenGLHelper.cxx
+++ b/vcl/source/opengl/OpenGLHelper.cxx
@@ -400,6 +400,7 @@ void OpenGLHelper::checkGLError(const char* pFile, size_t nLine)
{
OpenGLZone aZone;
+ int nErrors = 0;
for (;;)
{
GLenum glErr = glGetError();
@@ -413,6 +414,13 @@ void OpenGLHelper::checkGLError(const char* pFile, size_t nLine)
SAL_WARN("vcl.opengl", "GL Error #" << glErr << "(" << sError << ") in File " << pFile << " at line: " << nLine);
else
SAL_WARN("vcl.opengl", "GL Error #" << glErr << " (no message available) in File " << pFile << " at line: " << nLine);
+
+ // tdf#93798 - apitrace appears to sometimes cause issues with an infinite loop here.
+ if (++nErrors >= 8)
+ {
+ SAL_WARN("vcl.opengl", "Breaking potentially recursive glGetError loop");
+ break;
+ }
}
}