diff --git a/include/gui/BufferQueue.h b/include/gui/BufferQueue.h
index 14f20d7..02d26c1 100644
--- a/include/gui/BufferQueue.h
+++ b/include/gui/BufferQueue.h
@@ -38,7 +38,7 @@
     enum { NUM_BUFFER_SLOTS = 32 };
     enum { NO_CONNECTED_API = 0 };
     enum { INVALID_BUFFER_SLOT = -1 };
-    enum { STALE_BUFFER_SLOT = 1 };
+    enum { STALE_BUFFER_SLOT = 1, NO_BUFFER_AVAILABLE };
 
     // ConsumerListener is the interface through which the BufferQueue notifies
     // the consumer of events that the consumer may wish to react to.  Because
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;
         }
