BufferQueue returns proper code on acquire

Also removed unnecessary debug messages from
SurfaceTextureClient.

Change-Id: I291897a44170142f9d42a007b008823fad4683e0
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;
         }