diff options
| author | Romain Guy <romainguy@google.com> | 2010-09-16 14:18:22 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-09-16 14:18:22 -0700 |
| commit | 885b1f21d95c5c356d7dbe40a4d033d558c2c772 (patch) | |
| tree | c9d2bebc91a77878600ca6cbdfdcb8d1348023cf /libs/hwui/OpenGLRenderer.cpp | |
| parent | 9b61dc564e673a116928838e42dae25bdf1e0796 (diff) | |
| parent | b025b9c8b4efefadb01937db61a1f8ee7d2452bf (diff) | |
| download | frameworks_base-885b1f21d95c5c356d7dbe40a4d033d558c2c772.zip frameworks_base-885b1f21d95c5c356d7dbe40a4d033d558c2c772.tar.gz frameworks_base-885b1f21d95c5c356d7dbe40a4d033d558c2c772.tar.bz2 | |
Merge "Better error handling in the OpenGL renderer."
Diffstat (limited to 'libs/hwui/OpenGLRenderer.cpp')
| -rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index f187d3e..670d049 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -124,6 +124,8 @@ OpenGLRenderer::OpenGLRenderer(): mCaches(Caches::getInstance()) { if (maxTextureUnits < REQUIRED_TEXTURE_UNITS_COUNT) { LOGW("At least %d texture units are required!", REQUIRED_TEXTURE_UNITS_COUNT); } + + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize); } OpenGLRenderer::~OpenGLRenderer() { @@ -161,6 +163,15 @@ void OpenGLRenderer::prepare() { mSnapshot->setClip(0.0f, 0.0f, mWidth, mHeight); } +void OpenGLRenderer::finish() { +#if DEBUG_OPENGL + GLenum status = GL_NO_ERROR; + while ((status = glGetError()) != GL_NO_ERROR) { + LOGD("GL error from OpenGLRenderer: 0x%x", status); + } +#endif +} + void OpenGLRenderer::acquireContext() { if (mCaches.currentProgram) { if (mCaches.currentProgram->isInUse()) { @@ -342,7 +353,10 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top, // Layers only make sense if they are in the framebuffer's bounds bounds.intersect(*mSnapshot->clipRect); - if (bounds.isEmpty()) return false; + if (bounds.isEmpty() || bounds.getWidth() > mMaxTextureSize || + bounds.getHeight() > mMaxTextureSize) { + return false; + } LayerSize size(bounds.getWidth(), bounds.getHeight()); Layer* layer = mCaches.layerCache.get(size); |
