diff options
author | Mathias Agopian <mathias@google.com> | 2011-04-01 14:58:43 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-04-01 14:58:43 -0700 |
commit | 756484c2bb110c7c2155e41b6f51672ecc638a23 (patch) | |
tree | a89dabf3f14bc93f1727b8c2dea76499039ab9ba /include | |
parent | 9aa26ee3bc47170e0bebef8df48c6199ca147c3c (diff) | |
parent | e5a1bffd9106b1d82259de1a202e1f2f28742392 (diff) | |
download | frameworks_base-756484c2bb110c7c2155e41b6f51672ecc638a23.zip frameworks_base-756484c2bb110c7c2155e41b6f51672ecc638a23.tar.gz frameworks_base-756484c2bb110c7c2155e41b6f51672ecc638a23.tar.bz2 |
Merge "SurfaceTexture can now force the client to request a buffer"
Diffstat (limited to 'include')
-rw-r--r-- | include/gui/ISurfaceTexture.h | 4 | ||||
-rw-r--r-- | include/gui/SurfaceTexture.h | 23 |
2 files changed, 27 insertions, 0 deletions
diff --git a/include/gui/ISurfaceTexture.h b/include/gui/ISurfaceTexture.h index 6ed3c6f..d2d3bb8 100644 --- a/include/gui/ISurfaceTexture.h +++ b/include/gui/ISurfaceTexture.h @@ -36,6 +36,8 @@ class ISurfaceTexture : public IInterface public: DECLARE_META_INTERFACE(SurfaceTexture); + enum { BUFFER_NEEDS_REALLOCATION = 1 }; + // requestBuffer requests a new buffer for the given index. The server (i.e. // the ISurfaceTexture implementation) assigns the newly created buffer to // the given slot index, and the client is expected to mirror the @@ -56,6 +58,8 @@ public: // should call requestBuffer to assign a new buffer to that slot. The client // is expected to either call cancelBuffer on the dequeued slot or to fill // in the contents of its associated buffer contents and call queueBuffer. + // If dequeueBuffer return BUFFER_NEEDS_REALLOCATION, the client is + // expected to call requestBuffer immediately. virtual status_t dequeueBuffer(int *slot) = 0; // queueBuffer indicates that the client has finished filling in the diff --git a/include/gui/SurfaceTexture.h b/include/gui/SurfaceTexture.h index afa64d3..585d288 100644 --- a/include/gui/SurfaceTexture.h +++ b/include/gui/SurfaceTexture.h @@ -121,6 +121,12 @@ public: // buffers before the client is done with them. sp<IBinder> getAllocator(); + // setDefaultBufferSize is used to set the size of buffers returned by + // requestBuffers when a with and height of zero is requested. + // A call to setDefaultBufferSize() may trigger requestBuffers() to + // be called from the client. + status_t setDefaultBufferSize(uint32_t w, uint32_t h); + private: // freeAllBuffers frees the resources (both GraphicBuffer and EGLImage) for @@ -158,6 +164,23 @@ private: // for a slot when requestBuffer is called with that slot's index. BufferSlot mSlots[NUM_BUFFER_SLOTS]; + // mDefaultWidth holds the default width of allocated buffers. It is used + // in requestBuffers() if a width and height of zero is specified. + uint32_t mDefaultWidth; + + // mDefaultHeight holds the default height of allocated buffers. It is used + // in requestBuffers() if a width and height of zero is specified. + uint32_t mDefaultHeight; + + // mPixelFormat holds the pixel format of allocated buffers. It is used + // in requestBuffers() if a format of zero is specified. + uint32_t mPixelFormat; + + // mUseDefaultSize indicates whether or not the default size should be used + // that is, if the last requestBuffer has been called with both width + // and height null. + bool mUseDefaultSize; + // mBufferCount is the number of buffer slots that the client and server // must maintain. It defaults to MIN_BUFFER_SLOTS and can be changed by // calling setBufferCount. |