add the ability to reject buffers in SurfaceTexture::updateTexImage
SurfaceFlinger is using this new feature to reject buffers that
don't have the right size.
Bug: 6498869
Change-Id: I8a7250a47db6c082a357b703feb3b9d0fc8d3443
diff --git a/include/gui/SurfaceTexture.h b/include/gui/SurfaceTexture.h
index f9cf0be..2635e2f 100644
--- a/include/gui/SurfaceTexture.h
+++ b/include/gui/SurfaceTexture.h
@@ -236,6 +236,19 @@
static bool isExternalFormat(uint32_t format);
private:
+ // this version of updateTexImage() takes a functor used to reject or not
+ // the newly acquired buffer.
+ // this API is TEMPORARY and intended to be used by SurfaceFlinger only,
+ // which is why class Layer is made a friend of SurfaceTexture below.
+ class BufferRejecter {
+ friend class SurfaceTexture;
+ virtual bool reject(const sp<GraphicBuffer>& buf,
+ const BufferQueue::BufferItem& item) = 0;
+ protected:
+ virtual ~BufferRejecter() { }
+ };
+ friend class Layer;
+ status_t updateTexImage(BufferRejecter* rejecter);
// createImage creates a new EGLImage from a GraphicBuffer.
EGLImageKHR createImage(EGLDisplay dpy,