Revert "Add a callback thread to ConsumerBase"

This reverts commit 22b5702b40eca423171124e69c3d4ad03a3e6900.

Bug 27557176

Change-Id: Icc0e79af82329e6414ed44a99e90631cfcf140fa
diff --git a/include/gui/ConsumerBase.h b/include/gui/ConsumerBase.h
index 1b63552..9307a26 100644
--- a/include/gui/ConsumerBase.h
+++ b/include/gui/ConsumerBase.h
@@ -26,8 +26,6 @@
 #include <utils/threads.h>
 #include <gui/IConsumerListener.h>
 
-#include <queue>
-
 namespace android {
 // ----------------------------------------------------------------------------
 
@@ -110,18 +108,18 @@
     // from the derived class.
     virtual void onLastStrongRef(const void* id);
 
-    // Handlers for the IConsumerListener interface, these will be called from
-    // the message queue thread. These calls are used to notify the ConsumerBase
-    // of asynchronous events in the BufferQueue.  The onFrameAvailableHandler,
-    // onFrameReplacedHandler, and onBuffersReleasedHandler methods should not
-    // need to be overridden by derived classes, but if they are overridden the
-    // ConsumerBase implementation must be called from the derived class. The
-    // ConsumerBase version of onSidebandStreamChangedHandler does nothing and
-    // can be overriden by derived classes if they want the notification.
-    virtual void onFrameAvailableHandler(const BufferItem& item);
-    virtual void onFrameReplacedHandler(const BufferItem& item);
-    virtual void onBuffersReleasedHandler();
-    virtual void onSidebandStreamChangedHandler();
+    // Implementation of the IConsumerListener interface.  These
+    // calls are used to notify the ConsumerBase of asynchronous events in the
+    // BufferQueue.  The onFrameAvailable, onFrameReplaced, and
+    // onBuffersReleased methods should not need to be overridden by derived
+    // classes, but if they are overridden the ConsumerBase implementation must
+    // be called from the derived class. The ConsumerBase version of
+    // onSidebandStreamChanged does nothing and can be overriden by derived
+    // classes if they want the notification.
+    virtual void onFrameAvailable(const BufferItem& item) override;
+    virtual void onFrameReplaced(const BufferItem& item) override;
+    virtual void onBuffersReleased() override;
+    virtual void onSidebandStreamChanged() override;
 
     // freeBufferLocked frees up the given buffer slot.  If the slot has been
     // initialized this will release the reference to the GraphicBuffer in that
@@ -246,35 +244,6 @@
     //
     // This mutex is intended to be locked by derived classes.
     mutable Mutex mMutex;
-
-    // Implements the ConsumerListener interface
-    virtual void onFrameAvailable(const BufferItem& item) override;
-    virtual void onFrameReplaced(const BufferItem& item) override;
-    virtual void onBuffersReleased() override;
-    virtual void onSidebandStreamChanged() override;
-
-    enum MessageType {
-        ON_FRAME_AVAILABLE,
-        ON_FRAME_REPLACED,
-        ON_BUFFERS_RELEASED,
-        ON_SIDEBAND_STREAM_CHANGED,
-        EXIT,
-    };
-
-    mutable Mutex mMessageQueueLock;
-    Condition mMessageAvailable;
-    std::queue<std::pair<MessageType, BufferItem>> mMessageQueue;
-
-    class MessageThread : public Thread {
-    public:
-        MessageThread(ConsumerBase* consumerBase) :
-            mConsumerBase(consumerBase) {};
-    protected:
-        virtual bool threadLoop() override;
-        ConsumerBase* mConsumerBase;
-    };
-
-    sp<MessageThread> mMessageThread;
 };
 
 // ----------------------------------------------------------------------------
diff --git a/libs/gui/ConsumerBase.cpp b/libs/gui/ConsumerBase.cpp
index 8e26ac8..2187e5e 100644
--- a/libs/gui/ConsumerBase.cpp
+++ b/libs/gui/ConsumerBase.cpp
@@ -74,26 +74,12 @@
     } else {
         mConsumer->setConsumerName(mName);
     }
-
-    mMessageThread = new MessageThread(this);
-    mMessageThread->run(mName);
 }
 
 ConsumerBase::~ConsumerBase() {
     CB_LOGV("~ConsumerBase");
-
-    mMessageThread->requestExit();
-    {
-        Mutex::Autolock lock(mMessageQueueLock);
-        mMessageQueue.emplace(std::piecewise_construct,
-                std::forward_as_tuple(EXIT),
-                std::forward_as_tuple());
-        mMessageAvailable.signal();
-    }
-
-    mMessageThread->join();
-
     Mutex::Autolock lock(mMutex);
+
     // Verify that abandon() has been called before we get here.  This should
     // be done by ConsumerBase::onLastStrongRef(), but it's possible for a
     // derived class to override that method and not call
@@ -114,13 +100,6 @@
 }
 
 void ConsumerBase::onFrameAvailable(const BufferItem& item) {
-    Mutex::Autolock lock(mMessageQueueLock);
-    mMessageQueue.emplace(std::piecewise_construct,
-            std::forward_as_tuple(ON_FRAME_AVAILABLE),
-            std::forward_as_tuple(item));
-    mMessageAvailable.signal();
-}
-void ConsumerBase::onFrameAvailableHandler(const BufferItem& item) {
     CB_LOGV("onFrameAvailable");
 
     sp<FrameAvailableListener> listener;
@@ -136,14 +115,6 @@
 }
 
 void ConsumerBase::onFrameReplaced(const BufferItem &item) {
-    Mutex::Autolock lock(mMessageQueueLock);
-    mMessageQueue.emplace(std::piecewise_construct,
-            std::forward_as_tuple(ON_FRAME_REPLACED),
-            std::forward_as_tuple(item));
-    mMessageAvailable.signal();
-}
-
-void ConsumerBase::onFrameReplacedHandler(const BufferItem &item) {
     CB_LOGV("onFrameReplaced");
 
     sp<FrameAvailableListener> listener;
@@ -159,14 +130,6 @@
 }
 
 void ConsumerBase::onBuffersReleased() {
-    Mutex::Autolock lock(mMessageQueueLock);
-    mMessageQueue.emplace(std::piecewise_construct,
-            std::forward_as_tuple(ON_BUFFERS_RELEASED),
-            std::forward_as_tuple());
-    mMessageAvailable.signal();
-}
-
-void ConsumerBase::onBuffersReleasedHandler() {
     Mutex::Autolock lock(mMutex);
 
     CB_LOGV("onBuffersReleased");
@@ -186,45 +149,6 @@
 }
 
 void ConsumerBase::onSidebandStreamChanged() {
-    Mutex::Autolock lock(mMessageQueueLock);
-    mMessageQueue.emplace(std::piecewise_construct,
-            std::forward_as_tuple(ON_SIDEBAND_STREAM_CHANGED),
-            std::forward_as_tuple());
-    mMessageAvailable.signal();
-}
-
-void ConsumerBase::onSidebandStreamChangedHandler() {
-}
-
-bool ConsumerBase::MessageThread::threadLoop() {
-    Mutex::Autolock lock(mConsumerBase->mMessageQueueLock);
-
-    if (mConsumerBase->mMessageQueue.empty()) {
-        mConsumerBase->mMessageAvailable.wait(mConsumerBase->mMessageQueueLock);
-    }
-
-    while (!mConsumerBase->mMessageQueue.empty()) {
-        auto nextMessage = mConsumerBase->mMessageQueue.front();
-
-        switch (nextMessage.first) {
-            case ON_FRAME_AVAILABLE:
-                mConsumerBase->onFrameAvailableHandler(nextMessage.second);
-                break;
-            case ON_FRAME_REPLACED:
-                mConsumerBase->onFrameReplacedHandler(nextMessage.second);
-                break;
-            case ON_BUFFERS_RELEASED:
-                mConsumerBase->onBuffersReleasedHandler();
-                break;
-            case ON_SIDEBAND_STREAM_CHANGED:
-                mConsumerBase->onSidebandStreamChangedHandler();
-                break;
-            case EXIT:
-                break;
-        }
-        mConsumerBase->mMessageQueue.pop();
-    }
-    return true;
 }
 
 void ConsumerBase::abandon() {
diff --git a/libs/gui/tests/SurfaceTextureGLToGL_test.cpp b/libs/gui/tests/SurfaceTextureGLToGL_test.cpp
index b8a7a90..c28b4d1 100644
--- a/libs/gui/tests/SurfaceTextureGLToGL_test.cpp
+++ b/libs/gui/tests/SurfaceTextureGLToGL_test.cpp
@@ -192,10 +192,6 @@
     ASSERT_EQ(EGL_SUCCESS, eglGetError());
     mProducerEglSurface = EGL_NO_SURFACE;
 
-    // sleep for 10ms to allow any asynchronous operations to complete before
-    // checking the reference counts
-    usleep(10000);
-
     // This test should have the only reference to buffer 0.
     EXPECT_EQ(1, buffers[0]->getStrongCount());