summaryrefslogtreecommitdiffstats
path: root/libs/gui/SurfaceTextureClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/gui/SurfaceTextureClient.cpp')
-rw-r--r--libs/gui/SurfaceTextureClient.cpp26
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)