From a5c75c01620179ce00812354778a29a80d76e71f Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Thu, 31 Mar 2011 19:10:24 -0700 Subject: SurfaceTexture can now force the client to request a buffer SurfaceTexture now has the concept of default size a new method, setDefaultBufferSize() to set it. When the default size is changed, dequeueBuffer() will return a value telling the client that it must ask for a new buffer. The above only applies if the client has not overriden the buffer size with setGeometry. Change-Id: I520dc40363054b7e37fdb67d6a2e7bce70326e81 --- libs/gui/SurfaceTextureClient.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'libs/gui/SurfaceTextureClient.cpp') diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp index a4812d0735..29fc4d3edc 100644 --- a/libs/gui/SurfaceTextureClient.cpp +++ b/libs/gui/SurfaceTextureClient.cpp @@ -25,8 +25,8 @@ namespace android { SurfaceTextureClient::SurfaceTextureClient( const sp& surfaceTexture): - mSurfaceTexture(surfaceTexture), mAllocator(0), mReqWidth(1), - mReqHeight(1), mReqFormat(DEFAULT_FORMAT), mReqUsage(0), + mSurfaceTexture(surfaceTexture), mAllocator(0), mReqWidth(0), + mReqHeight(0), mReqFormat(DEFAULT_FORMAT), mReqUsage(0), mTimestamp(NATIVE_WINDOW_TIMESTAMP_AUTO), mMutex() { // Initialize the ANativeWindow function pointers. ANativeWindow::setSwapInterval = setSwapInterval; @@ -100,7 +100,8 @@ int SurfaceTextureClient::dequeueBuffer(android_native_buffer_t** buffer) { return err; } sp& gbuf(mSlots[buf]); - if (gbuf == 0 || gbuf->getWidth() != mReqWidth || + if (err == ISurfaceTexture::BUFFER_NEEDS_REALLOCATION || + gbuf == 0 || gbuf->getWidth() != mReqWidth || gbuf->getHeight() != mReqHeight || uint32_t(gbuf->getPixelFormat()) != mReqFormat || (gbuf->getUsage() & mReqUsage) != mReqUsage) { -- cgit v1.2.3-59-g8ed1b