fix a bug where queueBuffer() would fail after the SharedbufferStack is resized

Change-Id: I12bf13a62018ce1349bab7be0b0cad7fad13fee8
diff --git a/libs/surfaceflinger_client/SharedBufferStack.cpp b/libs/surfaceflinger_client/SharedBufferStack.cpp
index 5705748..dab8ed8 100644
--- a/libs/surfaceflinger_client/SharedBufferStack.cpp
+++ b/libs/surfaceflinger_client/SharedBufferStack.cpp
@@ -182,10 +182,22 @@
     int tail = computeTail();
     snprintf(buffer, SIZE, 
             "%s[ head=%2d, available=%2d, queued=%2d, tail=%2d ] "
-            "reallocMask=%08x, inUse=%2d, identity=%d, status=%d\n",
+            "reallocMask=%08x, inUse=%2d, identity=%d, status=%d",
             prefix, stack.head, stack.available, stack.queued, tail,
             stack.reallocMask, stack.inUse, stack.identity, stack.status);
     result.append(buffer);
+
+    snprintf(buffer, SIZE, " { ");
+    result.append(buffer);
+
+    for (int i=0 ; i<mNumBuffers ; i++) {
+        snprintf(buffer, SIZE, "%d ", stack.index[i]);
+        result.append(buffer);
+    }
+
+    snprintf(buffer, SIZE, " }\n");
+    result.append(buffer);
+
     return result;
 }
 
@@ -323,6 +335,7 @@
     
     // lock the buffer before advancing head, which automatically unlocks
     // the buffer we preventively locked upon entering this function
+
     head = (head + 1) % numBuffers;
     android_atomic_write(stack.index[head], &stack.inUse);
 
@@ -416,7 +429,7 @@
 {
     SharedBufferStack& stack( *mSharedStack );
 
-    queued_head = ((queued_head+1 >= mNumBuffers) ? 0 : queued_head+1);
+    queued_head = (queued_head + 1) % mNumBuffers;
     stack.index[queued_head] = buf;
 
     QueueUpdate update(this);
@@ -449,9 +462,11 @@
 
 status_t SharedBufferClient::setBufferCount(int bufferCount)
 {
+    SharedBufferStack& stack( *mSharedStack );
     if (uint32_t(bufferCount) >= NUM_BUFFER_MAX)
         return BAD_VALUE;
     mNumBuffers = bufferCount;
+    queued_head = (stack.head + stack.queued) % mNumBuffers;
     return NO_ERROR;
 }