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.cpp38
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();