From e47498f8f258967ff62d070f08ff2dadd4ae2b56 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 8 Aug 2011 19:35:15 -0700 Subject: [PATCH] add some logs to track a crash in eglCreateImageKHR Bug: 5111008 Change-Id: I3e7f5b986151e80cbded39e0dec057770da52fc1 --- libs/gui/SurfaceTexture.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libs/gui/SurfaceTexture.cpp b/libs/gui/SurfaceTexture.cpp index 1a036ee57..07789b31e 100644 --- a/libs/gui/SurfaceTexture.cpp +++ b/libs/gui/SurfaceTexture.cpp @@ -628,16 +628,32 @@ status_t SurfaceTexture::updateTexImage() { 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;