summaryrefslogtreecommitdiffstats
path: root/libs/gui/ISurfaceTexture.cpp
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-08-08 19:14:03 -0700
committerMathias Agopian <mathias@google.com>2011-08-08 20:25:44 -0700
commit053b02df2d350466a2226a90709e50fedef54747 (patch)
tree28a844d96bfc2fdd0e3714305a8cb86e977a1d90 /libs/gui/ISurfaceTexture.cpp
parentfc4ba1141570fab7734e53586dc3d6f3afde10de (diff)
downloadframeworks_base-053b02df2d350466a2226a90709e50fedef54747.zip
frameworks_base-053b02df2d350466a2226a90709e50fedef54747.tar.gz
frameworks_base-053b02df2d350466a2226a90709e50fedef54747.tar.bz2
return correct value from query after connecting a surface
the first time a surface was connected, the values returned by query NATIVE_WINDOW_DEFAULT_{WIDTH|HEIGHT} and NATIVE_WINDOW_TRANSFORM_HINT were wrong until a call to queueBuffer was performed. Bug: 5137366, 5121607 Change-Id: I7ac6b5b0daa876638f6bed7c20f286a6e6d984f6
Diffstat (limited to 'libs/gui/ISurfaceTexture.cpp')
-rw-r--r--libs/gui/ISurfaceTexture.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/libs/gui/ISurfaceTexture.cpp b/libs/gui/ISurfaceTexture.cpp
index 55246dc..babd2c0 100644
--- a/libs/gui/ISurfaceTexture.cpp
+++ b/libs/gui/ISurfaceTexture.cpp
@@ -162,11 +162,15 @@ public:
return result;
}
- virtual status_t connect(int api) {
+ virtual status_t connect(int api,
+ uint32_t* outWidth, uint32_t* outHeight, uint32_t* outTransform) {
Parcel data, reply;
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
data.writeInt32(api);
remote()->transact(CONNECT, data, &reply);
+ *outWidth = reply.readInt32();
+ *outHeight = reply.readInt32();
+ *outTransform = reply.readInt32();
status_t result = reply.readInt32();
return result;
}
@@ -283,7 +287,12 @@ status_t BnSurfaceTexture::onTransact(
case CONNECT: {
CHECK_INTERFACE(ISurfaceTexture, data, reply);
int api = data.readInt32();
- status_t res = connect(api);
+ uint32_t outWidth, outHeight, outTransform;
+ status_t res = connect(api,
+ &outWidth, &outHeight, &outTransform);
+ reply->writeInt32(outWidth);
+ reply->writeInt32(outHeight);
+ reply->writeInt32(outTransform);
reply->writeInt32(res);
return NO_ERROR;
} break;