diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp
index 84ccb3f..8263e4e 100644
--- a/libs/gui/BufferQueue.cpp
+++ b/libs/gui/BufferQueue.cpp
@@ -851,8 +851,7 @@
 
         ATRACE_INT(mConsumerName.string(), mQueue.size());
     } else {
-        // should be a better return code?
-        return -EINVAL;
+        return NO_BUFFER_AVAILABLE;
     }
 
     return OK;
diff --git a/libs/gui/SurfaceTexture.cpp b/libs/gui/SurfaceTexture.cpp
index dd96f84..4fe2cca 100644
--- a/libs/gui/SurfaceTexture.cpp
+++ b/libs/gui/SurfaceTexture.cpp
@@ -211,7 +211,8 @@
 
     // In asynchronous mode the list is guaranteed to be one buffer
     // deep, while in synchronous mode we use the oldest buffer.
-    if (mBufferQueue->acquireBuffer(&item) == NO_ERROR) {
+    err = mBufferQueue->acquireBuffer(&item);
+    if (err == NO_ERROR) {
         int buf = item.mBuf;
         // This buffer was newly allocated, so we need to clean up on our side
         if (item.mGraphicBuffer != NULL) {
@@ -247,7 +248,6 @@
         glBindTexture(mTexTarget, mTexName);
         glEGLImageTargetTexture2DOES(mTexTarget, (GLeglImageOES)image);
 
-        status_t err = OK;
         while ((error = glGetError()) != GL_NO_ERROR) {
             ST_LOGE("updateTexImage: error binding external texture image %p "
                     "(slot %d): %#04x", image, buf, error);
@@ -292,9 +292,13 @@
         mCurrentScalingMode = item.mScalingMode;
         mCurrentTimestamp = item.mTimestamp;
         computeCurrentTransformMatrix();
-    } else {
+    } else  {
+        if (err < 0) {
+            ALOGE("updateTexImage failed on acquire %d", err);
+        }
         // We always bind the texture even if we don't update its contents.
         glBindTexture(mTexTarget, mTexName);
+        return OK;
     }
 
     return err;
diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp
index 6aa81a9..5fb5416 100644
--- a/libs/gui/SurfaceTextureClient.cpp
+++ b/libs/gui/SurfaceTextureClient.cpp
@@ -200,23 +200,6 @@
         android_native_buffer_t* buffer) const {
     bool dumpedState = false;
     for (int i = 0; i < NUM_BUFFER_SLOTS; i++) {
-        // XXX: Dump the slots whenever we hit a NULL entry while searching for
-        // a buffer.
-        if (mSlots[i] == NULL) {
-            if (!dumpedState) {
-                ALOGD("getSlotFromBufferLocked: encountered NULL buffer in slot %d "
-                        "looking for buffer %p", i, buffer->handle);
-                for (int j = 0; j < NUM_BUFFER_SLOTS; j++) {
-                    if (mSlots[j] == NULL) {
-                        ALOGD("getSlotFromBufferLocked:   %02d: NULL", j);
-                    } else {
-                        ALOGD("getSlotFromBufferLocked:   %02d: %p", j, mSlots[j]->handle);
-                    }
-                }
-                dumpedState = true;
-            }
-        }
-
         if (mSlots[i] != NULL && mSlots[i]->handle == buffer->handle) {
             return i;
         }
