diff options
author | Mathias Agopian <mathias@google.com> | 2011-04-26 14:57:40 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2011-04-26 15:03:27 -0700 |
commit | 6fad64c747040e6abcc6a57b99e5ba9293ee4d99 (patch) | |
tree | d43c999efa712e5171414c94d1d1a9effe044c0b | |
parent | 88eb5c07f567c30195d4940167cabc50bf2c1e34 (diff) | |
download | frameworks_base-6fad64c747040e6abcc6a57b99e5ba9293ee4d99.zip frameworks_base-6fad64c747040e6abcc6a57b99e5ba9293ee4d99.tar.gz frameworks_base-6fad64c747040e6abcc6a57b99e5ba9293ee4d99.tar.bz2 |
Report errors when eglCreateImageKHR fails
Change-Id: Ica39b72ac2505675e619ef4994bd67b98bf6e7da
-rw-r--r-- | libs/gui/SurfaceTexture.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/libs/gui/SurfaceTexture.cpp b/libs/gui/SurfaceTexture.cpp index 39418f0..15a176e 100644 --- a/libs/gui/SurfaceTexture.cpp +++ b/libs/gui/SurfaceTexture.cpp @@ -274,10 +274,14 @@ status_t SurfaceTexture::updateTexImage() { EGLImageKHR image = mSlots[mLastQueued].mEglImage; if (image == EGL_NO_IMAGE_KHR) { EGLDisplay dpy = eglGetCurrentDisplay(); - sp<GraphicBuffer> graphicBuffer = mSlots[mLastQueued].mGraphicBuffer; - image = createImage(dpy, graphicBuffer); + image = createImage(dpy, mSlots[mLastQueued].mGraphicBuffer); mSlots[mLastQueued].mEglImage = image; mSlots[mLastQueued].mEglDisplay = dpy; + if (image == EGL_NO_IMAGE_KHR) { + // NOTE: if dpy was invalid, createImage() is guaranteed to + // fail. so we'd end up here. + return -EINVAL; + } } GLint error; @@ -483,12 +487,9 @@ EGLImageKHR SurfaceTexture::createImage(EGLDisplay dpy, }; EGLImageKHR image = eglCreateImageKHR(dpy, EGL_NO_CONTEXT, EGL_NATIVE_BUFFER_ANDROID, cbuf, attrs); - EGLint error = eglGetError(); - if (error != EGL_SUCCESS) { + if (image == EGL_NO_IMAGE_KHR) { + EGLint error = eglGetError(); LOGE("error creating EGLImage: %#x", error); - } else if (image == EGL_NO_IMAGE_KHR) { - LOGE("no error reported, but no image was returned by " - "eglCreateImageKHR"); } return image; } |