summaryrefslogtreecommitdiffstats
path: root/opengl
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-09-06 17:24:05 -0700
committerMathias Agopian <mathias@google.com>2011-09-06 18:06:04 -0700
commit8ec2ff65da037da14fa1fe372a24a053d198fc51 (patch)
treecda2989be6e8f84a83c95aea2d8a7566fdf918c8 /opengl
parentb69f7015e7233d1c22d474f7f6850d4d93b2b790 (diff)
downloadframeworks_base-8ec2ff65da037da14fa1fe372a24a053d198fc51.zip
frameworks_base-8ec2ff65da037da14fa1fe372a24a053d198fc51.tar.gz
frameworks_base-8ec2ff65da037da14fa1fe372a24a053d198fc51.tar.bz2
add an option to EGL to dump stack traces on errors
enable by setting debug.egl.callstack to 1 Change-Id: I7fad9ce71b4c4c5ece97d4f9d139348eab742a3c
Diffstat (limited to 'opengl')
-rw-r--r--opengl/libs/EGL/egl.cpp11
-rw-r--r--opengl/libs/EGL/egl_tls.cpp11
2 files changed, 18 insertions, 4 deletions
diff --git a/opengl/libs/EGL/egl.cpp b/opengl/libs/EGL/egl.cpp
index ca62908..1e43195 100644
--- a/opengl/libs/EGL/egl.cpp
+++ b/opengl/libs/EGL/egl.cpp
@@ -148,10 +148,13 @@ static int gl_no_context() {
if (egl_tls_t::logNoContextCall()) {
LOGE("call to OpenGL ES API with no current context "
"(logged once per thread)");
- LOGE("call stack before error:");
- CallStack stack;
- stack.update();
- stack.dump();
+ char value[PROPERTY_VALUE_MAX];
+ property_get("debug.egl.callstack", value, "0");
+ if (atoi(value)) {
+ CallStack stack;
+ stack.update();
+ stack.dump();
+ }
}
return 0;
}
diff --git a/opengl/libs/EGL/egl_tls.cpp b/opengl/libs/EGL/egl_tls.cpp
index 961a61e..f3c8d2c 100644
--- a/opengl/libs/EGL/egl_tls.cpp
+++ b/opengl/libs/EGL/egl_tls.cpp
@@ -14,9 +14,13 @@
** limitations under the License.
*/
+#include <stdlib.h>
#include <pthread.h>
#include <cutils/log.h>
+#include <cutils/properties.h>
+
+#include <utils/CallStack.h>
#include <EGL/egl.h>
@@ -69,6 +73,13 @@ void egl_tls_t::setErrorEtcImpl(const char* caller, int line, EGLint error) {
if (tls->error != error) {
LOGE("%s:%d error %x (%s)", caller, line, error, egl_strerror(error));
tls->error = error;
+ char value[PROPERTY_VALUE_MAX];
+ property_get("debug.egl.callstack", value, "0");
+ if (atoi(value)) {
+ CallStack stack;
+ stack.update();
+ stack.dump();
+ }
}
}