diff options
author | Mathias Agopian <mathias@google.com> | 2009-09-17 19:19:08 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2009-09-17 19:23:59 -0700 |
commit | ac7f13bc1ac8af99093987ebcb811f3892b49296 (patch) | |
tree | e2cd07d253de353a68db17ab2820710f8ccbe2aa /libs/surfaceflinger/Layer.cpp | |
parent | cd25c56ad442fd5574c1fa49e0d443a80551ee1f (diff) | |
download | frameworks_base-ac7f13bc1ac8af99093987ebcb811f3892b49296.zip frameworks_base-ac7f13bc1ac8af99093987ebcb811f3892b49296.tar.gz frameworks_base-ac7f13bc1ac8af99093987ebcb811f3892b49296.tar.bz2 |
fix [2129080] Soft reboot after clicking around and then rubbing the screen
Diffstat (limited to 'libs/surfaceflinger/Layer.cpp')
-rw-r--r-- | libs/surfaceflinger/Layer.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libs/surfaceflinger/Layer.cpp b/libs/surfaceflinger/Layer.cpp index 7387c85..8dfc2cf 100644 --- a/libs/surfaceflinger/Layer.cpp +++ b/libs/surfaceflinger/Layer.cpp @@ -176,7 +176,7 @@ void Layer::reloadTexture(const Region& dirty) // this failed, for instance, because we don't support // NPOT. // FIXME: do something! - LOGD("layer=%p, glEGLImageTargetTexture2DOES(%d) " + LOGD("layer=%p, glEGLImageTargetTexture2DOES(%p) " "failed err=0x%04x", this, mTextures[index].image, error); mFlags &= ~DisplayHardware::DIRECT_TEXTURE; @@ -256,11 +256,17 @@ sp<SurfaceBuffer> Layer::requestBuffer(int index, int usage) w = mWidth; h = mHeight; buffer = mBuffers[index]; + + // destroy() could have been called before we get here, we log it + // because it's uncommon, and the code below should handle it + LOGW_IF(buffer==0, + "mBuffers[%d] is null (mWidth=%d, mHeight=%d)", + index, w, h); + mBuffers[index].clear(); } - - if (buffer->getStrongCount() == 1) { + if (buffer!=0 && buffer->getStrongCount() == 1) { err = buffer->reallocate(w, h, mFormat, usage, mBufferFlags); } else { // here we have to reallocate a new buffer because we could have a |