summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJamie Gennis <jgennis@google.com>2011-02-02 15:56:20 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-02-02 15:56:20 -0800
commit421d94c20321e1de528416b279bf148baba47b39 (patch)
tree9cd23e4ce3a4e2d8c416b57f69c66eda2550ee16 /include
parent94dbc990b8840d323d358770a1ba02bb4820c681 (diff)
parentecb4b3f02340e21eefabbea78559e85ec7ee0089 (diff)
downloadframeworks_base-421d94c20321e1de528416b279bf148baba47b39.zip
frameworks_base-421d94c20321e1de528416b279bf148baba47b39.tar.gz
frameworks_base-421d94c20321e1de528416b279bf148baba47b39.tar.bz2
am ecb4b3f0: Merge "Pass the IGraphicBufferAlloc to SurfaceTextureClient." into honeycomb
* commit 'ecb4b3f02340e21eefabbea78559e85ec7ee0089': Pass the IGraphicBufferAlloc to SurfaceTextureClient.
Diffstat (limited to 'include')
-rw-r--r--include/gui/ISurfaceTexture.h6
-rw-r--r--include/gui/SurfaceTexture.h6
-rw-r--r--include/gui/SurfaceTextureClient.h4
3 files changed, 16 insertions, 0 deletions
diff --git a/include/gui/ISurfaceTexture.h b/include/gui/ISurfaceTexture.h
index 77d37f1..168310c 100644
--- a/include/gui/ISurfaceTexture.h
+++ b/include/gui/ISurfaceTexture.h
@@ -72,6 +72,12 @@ public:
virtual status_t setCrop(const Rect& reg) = 0;
virtual status_t setTransform(uint32_t transform) = 0;
+
+ // getAllocator retrieves the binder object that must be referenced as long
+ // as the GraphicBuffers dequeued from this ISurfaceTexture are referenced.
+ // Holding this binder reference prevents SurfaceFlinger from freeing the
+ // buffers before the client is done with them.
+ virtual sp<IBinder> getAllocator() = 0;
};
// ----------------------------------------------------------------------------
diff --git a/include/gui/SurfaceTexture.h b/include/gui/SurfaceTexture.h
index 79c33f5..31615d0 100644
--- a/include/gui/SurfaceTexture.h
+++ b/include/gui/SurfaceTexture.h
@@ -101,6 +101,12 @@ public:
// when a new frame becomes available.
void setFrameAvailableListener(const sp<FrameAvailableListener>& l);
+ // getAllocator retrieves the binder object that must be referenced as long
+ // as the GraphicBuffers dequeued from this SurfaceTexture are referenced.
+ // Holding this binder reference prevents SurfaceFlinger from freeing the
+ // buffers before the client is done with them.
+ sp<IBinder> getAllocator();
+
private:
// freeAllBuffers frees the resources (both GraphicBuffer and EGLImage) for
diff --git a/include/gui/SurfaceTextureClient.h b/include/gui/SurfaceTextureClient.h
index dd1d490..ff2251d 100644
--- a/include/gui/SurfaceTextureClient.h
+++ b/include/gui/SurfaceTextureClient.h
@@ -83,6 +83,10 @@ private:
// interactions with the server using this interface.
sp<ISurfaceTexture> mSurfaceTexture;
+ // mAllocator is the binder object that is referenced to prevent the
+ // dequeued buffers from being freed prematurely.
+ sp<IBinder> mAllocator;
+
// mSlots stores the buffers that have been allocated for each buffer slot.
// It is initialized to null pointers, and gets filled in with the result of
// ISurfaceTexture::requestBuffer when the client dequeues a buffer from a