diff --git a/libs/gui/SurfaceTexture.cpp b/libs/gui/SurfaceTexture.cpp
index 55b1a9c..d7c449c 100644
--- a/libs/gui/SurfaceTexture.cpp
+++ b/libs/gui/SurfaceTexture.cpp
@@ -385,6 +385,10 @@
 
 status_t SurfaceTexture::queueBuffer(int buf, int64_t timestamp) {
     LOGV("SurfaceTexture::queueBuffer");
+
+    sp<FrameAvailableListener> listener;
+
+    { // scope for the lock
     Mutex::Autolock lock(mMutex);
     if (buf < 0 || buf >= mBufferCount) {
         LOGE("queueBuffer: slot index out of range [0, %d]: %d",
@@ -403,6 +407,10 @@
         return -EINVAL;
     }
 
+    if (mQueue.empty()) {
+        listener = mFrameAvailableListener;
+    }
+
     if (mSynchronousMode) {
         // in synchronous mode we queue all buffers in a FIFO
         mQueue.push_back(buf);
@@ -423,11 +431,13 @@
     mSlots[buf].mLastQueuedCrop = mNextCrop;
     mSlots[buf].mLastQueuedTransform = mNextTransform;
     mSlots[buf].mLastQueuedTimestamp = timestamp;
-
-    if (mFrameAvailableListener != 0) {
-        mFrameAvailableListener->onFrameAvailable();
-    }
     mDequeueCondition.signal();
+    } // scope for the lock
+
+    // call back without lock held
+    if (listener != 0) {
+        listener->onFrameAvailable();
+    }
     return OK;
 }
 
@@ -463,6 +473,7 @@
 
 status_t SurfaceTexture::updateTexImage() {
     LOGV("SurfaceTexture::updateTexImage");
+
     Mutex::Autolock lock(mMutex);
 
     int buf = mCurrentTexture;
@@ -496,7 +507,7 @@
 
         GLint error;
         while ((error = glGetError()) != GL_NO_ERROR) {
-            LOGE("GL error cleared before updating SurfaceTexture: %#04x", error);
+            LOGW("updateTexImage: clearing GL error: %#04x", error);
         }
 
         GLenum target = getTextureTarget(mSlots[buf].mGraphicBuffer->format);
@@ -539,6 +550,11 @@
     return OK;
 }
 
+size_t SurfaceTexture::getQueuedCount() const {
+    Mutex::Autolock lock(mMutex);
+    return mQueue.size();
+}
+
 bool SurfaceTexture::isExternalFormat(uint32_t format)
 {
     switch (format) {
