diff options
author | Jamie Gennis <jgennis@google.com> | 2011-02-02 15:56:20 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-02-02 15:56:20 -0800 |
commit | 421d94c20321e1de528416b279bf148baba47b39 (patch) | |
tree | 9cd23e4ce3a4e2d8c416b57f69c66eda2550ee16 /include | |
parent | 94dbc990b8840d323d358770a1ba02bb4820c681 (diff) | |
parent | ecb4b3f02340e21eefabbea78559e85ec7ee0089 (diff) | |
download | frameworks_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.h | 6 | ||||
-rw-r--r-- | include/gui/SurfaceTexture.h | 6 | ||||
-rw-r--r-- | include/gui/SurfaceTextureClient.h | 4 |
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 |