summaryrefslogtreecommitdiffstats
path: root/libs/surfaceflinger/Layer.cpp
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2009-09-17 19:19:08 -0700
committerMathias Agopian <mathias@google.com>2009-09-17 19:23:59 -0700
commitac7f13bc1ac8af99093987ebcb811f3892b49296 (patch)
treee2cd07d253de353a68db17ab2820710f8ccbe2aa /libs/surfaceflinger/Layer.cpp
parentcd25c56ad442fd5574c1fa49e0d443a80551ee1f (diff)
downloadframeworks_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.cpp12
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