diff options
Diffstat (limited to 'libs/gui/SurfaceTextureClient.cpp')
-rw-r--r-- | libs/gui/SurfaceTextureClient.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp index e33b026..5de963c 100644 --- a/libs/gui/SurfaceTextureClient.cpp +++ b/libs/gui/SurfaceTextureClient.cpp @@ -407,6 +407,9 @@ int SurfaceTextureClient::perform(int operation, va_list args) case NATIVE_WINDOW_SET_BUFFERS_SIZE: res = dispatchSetBuffersSize(args); break; + case NATIVE_WINDOW_UPDATE_BUFFERS_GEOMETRY: + res = dispatchUpdateBuffersGeometry(args); + break; #endif case NATIVE_WINDOW_LOCK: res = dispatchLock(args); @@ -490,6 +493,13 @@ int SurfaceTextureClient::dispatchSetBuffersSize(va_list args) { int size = va_arg(args, int); return setBuffersSize(size); } + +int SurfaceTextureClient::dispatchUpdateBuffersGeometry(va_list args) { + int w = va_arg(args, int); + int h = va_arg(args, int); + int f = va_arg(args, int); + return updateBuffersGeometry(w, h, f); +} #endif int SurfaceTextureClient::dispatchSetScalingMode(va_list args) { @@ -666,6 +676,22 @@ int SurfaceTextureClient::setBuffersSize(int size) } return NO_ERROR; } + +int SurfaceTextureClient::updateBuffersGeometry(int w, int h, int f) +{ + ATRACE_CALL(); + ALOGV("SurfaceTextureClient::updateBuffersGeometry"); + + if (w<0 || h<0 || f<0) + return BAD_VALUE; + + if ((w && !h) || (!w && h)) + return BAD_VALUE; + + Mutex::Autolock lock(mMutex); + status_t err = mSurfaceTexture->updateBuffersGeometry(w, h, f); + return err; +} #endif int SurfaceTextureClient::setScalingMode(int mode) |