OSDN Git Service

All consumers now take an IGraphicBufferConsumer instead of a BufferQueue
[android-x86/frameworks-native.git] / services / surfaceflinger / SurfaceFlingerConsumer.h
index d91f27e..aa2b37f 100644 (file)
 #ifndef ANDROID_SURFACEFLINGERCONSUMER_H
 #define ANDROID_SURFACEFLINGERCONSUMER_H
 
-#include <gui/SurfaceTexture.h>
+#include <gui/GLConsumer.h>
 
 namespace android {
 // ----------------------------------------------------------------------------
 
 /*
- * This is a thin wrapper around SurfaceTexture.
+ * This is a thin wrapper around GLConsumer.
  */
-class SurfaceFlingerConsumer : public SurfaceTexture {
+class SurfaceFlingerConsumer : public GLConsumer {
 public:
-    SurfaceFlingerConsumer(GLuint tex, bool allowSynchronousMode = true,
-            GLenum texTarget = GL_TEXTURE_EXTERNAL_OES, bool useFenceSync = true,
-            const sp<BufferQueue> &bufferQueue = 0)
-        : SurfaceTexture(tex, allowSynchronousMode, texTarget, useFenceSync,
-            bufferQueue)
+    SurfaceFlingerConsumer(const sp<BufferQueue>& bq, GLuint tex,
+            GLenum texTarget = GL_TEXTURE_EXTERNAL_OES,
+            bool useFenceSync = true)
+        : GLConsumer(bq, tex, texTarget, useFenceSync)
     {}
 
     class BufferRejecter {
         friend class SurfaceFlingerConsumer;
         virtual bool reject(const sp<GraphicBuffer>& buf,
-                const BufferQueue::BufferItem& item) = 0;
+                const IGraphicBufferConsumer::BufferItem& item) = 0;
 
     protected:
         virtual ~BufferRejecter() { }
     };
 
     // This version of updateTexImage() takes a functor that may be used to
-    // reject the newly acquired buffer.  Unlike the SurfaceTexture version,
+    // reject the newly acquired buffer.  Unlike the GLConsumer version,
     // this does not guarantee that the buffer has been bound to the GL
     // texture.
     status_t updateTexImage(BufferRejecter* rejecter);
 
-    // Pass-through to SurfaceTexture implementation.
-    status_t bindTextureImage() { return SurfaceTexture::bindTextureImage(); }
+    // See GLConsumer::bindTextureImageLocked().
+    status_t bindTextureImage();
+
+private:
+    nsecs_t computeExpectedPresent();
 };
 
 // ----------------------------------------------------------------------------