Merge "Fix bug 5135608 - Let AbsListView take focus while detached"
diff --git a/libs/gui/SurfaceTexture.cpp b/libs/gui/SurfaceTexture.cpp
index 1a036ee..be71c94 100644
--- a/libs/gui/SurfaceTexture.cpp
+++ b/libs/gui/SurfaceTexture.cpp
@@ -628,16 +628,32 @@
LOGV("SurfaceTexture::updateTexImage");
Mutex::Autolock lock(mMutex);
+ if (mAbandoned) {
+ LOGE("calling updateTexImage() on an abandoned SurfaceTexture");
+ //return NO_INIT;
+ }
+
// In asynchronous mode the list is guaranteed to be one buffer
// deep, while in synchronous mode we use the oldest buffer.
if (!mQueue.empty()) {
Fifo::iterator front(mQueue.begin());
int buf = *front;
+ if (uint32_t(buf) >= NUM_BUFFER_SLOTS) {
+ LOGE("buffer index out of range (index=%d)", buf);
+ //return BAD_VALUE;
+ }
+
// Update the GL texture object.
EGLImageKHR image = mSlots[buf].mEglImage;
if (image == EGL_NO_IMAGE_KHR) {
EGLDisplay dpy = eglGetCurrentDisplay();
+
+ if (mSlots[buf].mGraphicBuffer == 0) {
+ LOGE("buffer at slot %d is null", buf);
+ //return BAD_VALUE;
+ }
+
image = createImage(dpy, mSlots[buf].mGraphicBuffer);
mSlots[buf].mEglImage = image;
mSlots[buf].mEglDisplay = dpy;
@@ -965,10 +981,15 @@
for (int i=0 ; i<mBufferCount ; i++) {
const BufferSlot& slot(mSlots[i]);
+ const sp<GraphicBuffer>& buf(slot.mGraphicBuffer);
snprintf(buffer, SIZE,
- "%s%s[%02d] state=%-8s, crop=[%d,%d,%d,%d], transform=0x%02x, "
- "timestamp=%lld\n",
- prefix, (i==mCurrentTexture)?">":" ", i, stateName(slot.mBufferState),
+ "%s%s[%02d] "
+ "%p [%4ux%4u:%4u,%3X] "
+ "state=%-8s, crop=[%d,%d,%d,%d], "
+ "transform=0x%02x, timestamp=%lld\n",
+ prefix, (i==mCurrentTexture)?">":" ", i,
+ buf->handle, buf->width, buf->height, buf->stride, buf->format,
+ stateName(slot.mBufferState),
slot.mCrop.left, slot.mCrop.top, slot.mCrop.right, slot.mCrop.bottom,
slot.mTransform, slot.mTimestamp
);
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 383c045..505c843 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -533,7 +533,7 @@
}
snprintf(buffer, SIZE,
" "
- "format=%2d, activeBuffer=[%3ux%3u:%3u,%3u],"
+ "format=%2d, activeBuffer=[%4ux%4u:%4u,%3X],"
" freezeLock=%p, queued-frames=%d\n",
mFormat, w0, h0, s0,f0,
getFreezeLock().get(), mQueuedFrames);