diff options
author | 2012-04-23 14:28:58 -0700 | |
---|---|---|
committer | 2012-04-23 20:06:02 -0700 | |
commit | 24202f5676c32edeef6544cf36e06b9fc970dbde (patch) | |
tree | bfeaa065a551e9b4fedd8357c83da1b9b469b206 | |
parent | a0db308c3d62301ae41b2e2bcf295c4ee4c7b08e (diff) |
update the binder protocol for connect to match that of queueBuffer
indeed, connect and queueBuffer return the same data, so it's
easier to have them use the same protocol.
Change-Id: I4f9fa3be0a80c9ab0a7a4039b282ae843aab02e1
-rw-r--r-- | include/gui/BufferQueue.h | 3 | ||||
-rw-r--r-- | include/gui/ISurfaceTexture.h | 3 | ||||
-rw-r--r-- | libs/gui/BufferQueue.cpp | 7 | ||||
-rw-r--r-- | libs/gui/ISurfaceTexture.cpp | 17 | ||||
-rw-r--r-- | libs/gui/SurfaceTextureClient.cpp | 5 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceTextureLayer.cpp | 6 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceTextureLayer.h | 3 |
7 files changed, 16 insertions, 28 deletions
diff --git a/include/gui/BufferQueue.h b/include/gui/BufferQueue.h index 008df35ce0..6c38cde396 100644 --- a/include/gui/BufferQueue.h +++ b/include/gui/BufferQueue.h @@ -143,8 +143,7 @@ public: // // This method will fail if the connect was previously called on the // BufferQueue and no corresponding disconnect call was made. - virtual status_t connect(int api, - uint32_t* outWidth, uint32_t* outHeight, uint32_t* outTransform); + virtual status_t connect(int api, QueueBufferOutput* output); // disconnect attempts to disconnect a producer client API from the // BufferQueue. Calling this method will cause any subsequent calls to other diff --git a/include/gui/ISurfaceTexture.h b/include/gui/ISurfaceTexture.h index 0b4d099c58..929eda233e 100644 --- a/include/gui/ISurfaceTexture.h +++ b/include/gui/ISurfaceTexture.h @@ -153,8 +153,7 @@ protected: // outWidth, outHeight and outTransform are filled with the default width // and height of the window and current transform applied to buffers, // respectively. - virtual status_t connect(int api, - uint32_t* outWidth, uint32_t* outHeight, uint32_t* outTransform) = 0; + virtual status_t connect(int api, QueueBufferOutput* output) = 0; // disconnect attempts to disconnect a client API from the SurfaceTexture. // Calling this method will cause any subsequent calls to other diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp index a6403d4ea5..5941dc287f 100644 --- a/libs/gui/BufferQueue.cpp +++ b/libs/gui/BufferQueue.cpp @@ -651,8 +651,7 @@ void BufferQueue::cancelBuffer(int buf) { mDequeueCondition.broadcast(); } -status_t BufferQueue::connect(int api, - uint32_t* outWidth, uint32_t* outHeight, uint32_t* outTransform) { +status_t BufferQueue::connect(int api, QueueBufferOutput* output) { ATRACE_CALL(); ST_LOGV("connect: api=%d", api); Mutex::Autolock lock(mMutex); @@ -679,9 +678,7 @@ status_t BufferQueue::connect(int api, err = -EINVAL; } else { mConnectedApi = api; - *outWidth = mDefaultWidth; - *outHeight = mDefaultHeight; - *outTransform = mTransformHint; + output->inflate(mDefaultWidth, mDefaultHeight, mDefaultHeight); } break; default: diff --git a/libs/gui/ISurfaceTexture.cpp b/libs/gui/ISurfaceTexture.cpp index 265dd5d9de..3eb5e7aec2 100644 --- a/libs/gui/ISurfaceTexture.cpp +++ b/libs/gui/ISurfaceTexture.cpp @@ -145,8 +145,7 @@ public: return result; } - virtual status_t connect(int api, - uint32_t* outWidth, uint32_t* outHeight, uint32_t* outTransform) { + virtual status_t connect(int api, QueueBufferOutput* output) { Parcel data, reply; data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor()); data.writeInt32(api); @@ -154,9 +153,7 @@ public: if (result != NO_ERROR) { return result; } - *outWidth = reply.readInt32(); - *outHeight = reply.readInt32(); - *outTransform = reply.readInt32(); + memcpy(output, reply.readInplace(sizeof(*output)), sizeof(*output)); result = reply.readInt32(); return result; } @@ -251,12 +248,10 @@ status_t BnSurfaceTexture::onTransact( case CONNECT: { CHECK_INTERFACE(ISurfaceTexture, data, reply); int api = data.readInt32(); - uint32_t outWidth, outHeight, outTransform; - status_t res = connect(api, - &outWidth, &outHeight, &outTransform); - reply->writeInt32(outWidth); - reply->writeInt32(outHeight); - reply->writeInt32(outTransform); + QueueBufferOutput* const output = + reinterpret_cast<QueueBufferOutput *>( + reply->writeInplace(sizeof(QueueBufferOutput))); + status_t res = connect(api, output); reply->writeInt32(res); return NO_ERROR; } break; diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp index b37d821f9b..48d3b6f1f4 100644 --- a/libs/gui/SurfaceTextureClient.cpp +++ b/libs/gui/SurfaceTextureClient.cpp @@ -429,8 +429,9 @@ int SurfaceTextureClient::connect(int api) { ATRACE_CALL(); ALOGV("SurfaceTextureClient::connect"); Mutex::Autolock lock(mMutex); - int err = mSurfaceTexture->connect(api, - &mDefaultWidth, &mDefaultHeight, &mTransformHint); + ISurfaceTexture::QueueBufferOutput output; + int err = mSurfaceTexture->connect(api, &output); + output.deflate(&mDefaultWidth, &mDefaultHeight, &mTransformHint); if (!err && api == NATIVE_WINDOW_API_CPU) { mConnectedToCpu = true; } diff --git a/services/surfaceflinger/SurfaceTextureLayer.cpp b/services/surfaceflinger/SurfaceTextureLayer.cpp index 2b647bb8a1..0b638b45f9 100644 --- a/services/surfaceflinger/SurfaceTextureLayer.cpp +++ b/services/surfaceflinger/SurfaceTextureLayer.cpp @@ -34,10 +34,8 @@ SurfaceTextureLayer::SurfaceTextureLayer() SurfaceTextureLayer::~SurfaceTextureLayer() { } -status_t SurfaceTextureLayer::connect(int api, - uint32_t* outWidth, uint32_t* outHeight, uint32_t* outTransform) { - status_t err = BufferQueue::connect(api, - outWidth, outHeight, outTransform); +status_t SurfaceTextureLayer::connect(int api, QueueBufferOutput* output) { + status_t err = BufferQueue::connect(api, output); if (err == NO_ERROR) { switch(api) { case NATIVE_WINDOW_API_MEDIA: diff --git a/services/surfaceflinger/SurfaceTextureLayer.h b/services/surfaceflinger/SurfaceTextureLayer.h index be26b2f8c5..e892ea0daa 100644 --- a/services/surfaceflinger/SurfaceTextureLayer.h +++ b/services/surfaceflinger/SurfaceTextureLayer.h @@ -37,8 +37,7 @@ public: SurfaceTextureLayer(); ~SurfaceTextureLayer(); - virtual status_t connect(int api, - uint32_t* outWidth, uint32_t* outHeight, uint32_t* outTransform); + virtual status_t connect(int api, QueueBufferOutput* output); }; // --------------------------------------------------------------------------- |