diff options
author | Ben Murdoch <benm@google.com> | 2011-03-02 02:18:03 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-03-02 02:18:03 -0800 |
commit | 85d9f11c821466dfaf7e0f4b3e755c9439027783 (patch) | |
tree | cd3277e70531074a463fb09f382b0f0eb7187a8a /WebCore/platform | |
parent | dfa39cc056ab8a6178f50905c31b97e27dd5d032 (diff) | |
parent | f530a67b51ee304e24ab3e1dabc6b67958c09c68 (diff) | |
download | external_webkit-85d9f11c821466dfaf7e0f4b3e755c9439027783.zip external_webkit-85d9f11c821466dfaf7e0f4b3e755c9439027783.tar.gz external_webkit-85d9f11c821466dfaf7e0f4b3e755c9439027783.tar.bz2 |
Merge "Crash on GL OOM to stop fallback to SW rendering."
Diffstat (limited to 'WebCore/platform')
-rw-r--r-- | WebCore/platform/graphics/android/GLUtils.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/WebCore/platform/graphics/android/GLUtils.cpp b/WebCore/platform/graphics/android/GLUtils.cpp index b62072b..de794cb 100644 --- a/WebCore/platform/graphics/android/GLUtils.cpp +++ b/WebCore/platform/graphics/android/GLUtils.cpp @@ -99,13 +99,23 @@ void GLUtils::setOrthographicMatrix(TransformationMatrix& ortho, float left, flo // GL & EGL error checks ///////////////////////////////////////////////////////////////////////////////////////// +static void crashIfOOM(GLint errorCode) { + const GLint OOM_ERROR_CODE = 0x505; + if (errorCode == OOM_ERROR_CODE) { + XLOG("Fatal OOM detected."); + CRASH(); + } +} + void GLUtils::checkEglError(const char* op, EGLBoolean returnVal) { if (returnVal != EGL_TRUE) XLOG("EGL ERROR - %s() returned %d\n", op, returnVal); - for (EGLint error = eglGetError(); error != EGL_SUCCESS; error = eglGetError()) + for (EGLint error = eglGetError(); error != EGL_SUCCESS; error = eglGetError()) { XLOG("after %s() eglError (0x%x)\n", op, error); + crashIfOOM(error); + } } bool GLUtils::checkGlError(const char* op) @@ -113,6 +123,7 @@ bool GLUtils::checkGlError(const char* op) bool ret = false; for (GLint error = glGetError(); error; error = glGetError()) { XLOG("GL ERROR - after %s() glError (0x%x)\n", op, error); + crashIfOOM(error); ret = true; } return ret; @@ -123,6 +134,7 @@ bool GLUtils::checkGlErrorOn(void* p, const char* op) bool ret = false; for (GLint error = glGetError(); error; error = glGetError()) { XLOG("GL ERROR on %x - after %s() glError (0x%x)\n", p, op, error); + crashIfOOM(error); ret = true; } return ret; |