diff options
Diffstat (limited to 'libs/gui/SurfaceTextureClient.cpp')
-rw-r--r-- | libs/gui/SurfaceTextureClient.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp index afdbf04..e33b026 100644 --- a/libs/gui/SurfaceTextureClient.cpp +++ b/libs/gui/SurfaceTextureClient.cpp @@ -80,6 +80,9 @@ void SurfaceTextureClient::init() { mReqHeight = 0; mReqFormat = 0; mReqUsage = 0; +#ifdef QCOM_BSP + mReqSize = 0; +#endif mTimestamp = NATIVE_WINDOW_TIMESTAMP_AUTO; mCrop.clear(); mScalingMode = NATIVE_WINDOW_SCALING_MODE_FREEZE; @@ -400,6 +403,11 @@ int SurfaceTextureClient::perform(int operation, va_list args) case NATIVE_WINDOW_SET_BUFFERS_FORMAT: res = dispatchSetBuffersFormat(args); break; +#ifdef QCOM_BSP + case NATIVE_WINDOW_SET_BUFFERS_SIZE: + res = dispatchSetBuffersSize(args); + break; +#endif case NATIVE_WINDOW_LOCK: res = dispatchLock(args); break; @@ -451,6 +459,7 @@ int SurfaceTextureClient::dispatchSetBuffersGeometry(va_list args) { int w = va_arg(args, int); int h = va_arg(args, int); int f = va_arg(args, int); + int err = setBuffersDimensions(w, h); if (err != 0) { return err; @@ -461,6 +470,7 @@ int SurfaceTextureClient::dispatchSetBuffersGeometry(va_list args) { int SurfaceTextureClient::dispatchSetBuffersDimensions(va_list args) { int w = va_arg(args, int); int h = va_arg(args, int); + return setBuffersDimensions(w, h); } @@ -475,6 +485,13 @@ int SurfaceTextureClient::dispatchSetBuffersFormat(va_list args) { return setBuffersFormat(f); } +#ifdef QCOM_BSP +int SurfaceTextureClient::dispatchSetBuffersSize(va_list args) { + int size = va_arg(args, int); + return setBuffersSize(size); +} +#endif + int SurfaceTextureClient::dispatchSetScalingMode(va_list args) { int m = va_arg(args, int); return setScalingMode(m); @@ -530,6 +547,9 @@ int SurfaceTextureClient::disconnect(int api) { mReqWidth = 0; mReqHeight = 0; mReqUsage = 0; +#ifdef QCOM_BSP + mReqSize = 0; +#endif mCrop.clear(); mScalingMode = NATIVE_WINDOW_SCALING_MODE_FREEZE; mTransform = 0; @@ -630,6 +650,24 @@ int SurfaceTextureClient::setBuffersFormat(int format) return NO_ERROR; } +#ifdef QCOM_BSP +int SurfaceTextureClient::setBuffersSize(int size) +{ + ATRACE_CALL(); + ALOGV("SurfaceTextureClient::setBuffersSize"); + + if (size<0) + return BAD_VALUE; + + Mutex::Autolock lock(mMutex); + if(mReqSize != (uint32_t)size) { + mReqSize = size; + return mSurfaceTexture->setBuffersSize(size); + } + return NO_ERROR; +} +#endif + int SurfaceTextureClient::setScalingMode(int mode) { ATRACE_CALL(); |