summaryrefslogtreecommitdiff
path: root/libs/gui/ISurfaceTexture.cpp
diff options
context:
space:
mode:
author Jamie Gennis <jgennis@google.com> 2011-07-19 12:08:33 -0700
committer Jamie Gennis <jgennis@google.com> 2011-07-22 14:20:41 -0700
commit7b305fffc39d0fe0926e7fd2d7f6a524fbce62b7 (patch)
tree4cede8cb10a7b51bf2198e3ddbb4d2f20b44ea4b /libs/gui/ISurfaceTexture.cpp
parent6e50219aee68ae6e76943f969374dae1b27154b3 (diff)
SurfaceTexture: add the abandon method.
This change adds the 'abandon' method to the SurfaceTexture C++ class. This method may be used to put the SurfaceTexture in an abandoned state, causing all ISurfaceTexture methods to fail. Change-Id: Ibd261f7b73f44e2bec36a8508bf92113cfb7cf95
Diffstat (limited to 'libs/gui/ISurfaceTexture.cpp')
-rw-r--r--libs/gui/ISurfaceTexture.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/libs/gui/ISurfaceTexture.cpp b/libs/gui/ISurfaceTexture.cpp
index c9c7397cdd..55246dc902 100644
--- a/libs/gui/ISurfaceTexture.cpp
+++ b/libs/gui/ISurfaceTexture.cpp
@@ -54,18 +54,18 @@ public:
{
}
- virtual sp<GraphicBuffer> requestBuffer(int bufferIdx) {
+ virtual status_t requestBuffer(int bufferIdx, sp<GraphicBuffer>* buf) {
Parcel data, reply;
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
data.writeInt32(bufferIdx);
remote()->transact(REQUEST_BUFFER, data, &reply);
- sp<GraphicBuffer> buffer;
bool nonNull = reply.readInt32();
if (nonNull) {
- buffer = new GraphicBuffer();
- reply.read(*buffer);
+ *buf = new GraphicBuffer();
+ reply.read(**buf);
}
- return buffer;
+ status_t result = reply.readInt32();
+ return result;
}
virtual status_t setBufferCount(int bufferCount)
@@ -192,11 +192,13 @@ status_t BnSurfaceTexture::onTransact(
case REQUEST_BUFFER: {
CHECK_INTERFACE(ISurfaceTexture, data, reply);
int bufferIdx = data.readInt32();
- sp<GraphicBuffer> buffer(requestBuffer(bufferIdx));
+ sp<GraphicBuffer> buffer;
+ int result = requestBuffer(bufferIdx, &buffer);
reply->writeInt32(buffer != 0);
if (buffer != 0) {
reply->write(*buffer);
}
+ reply->writeInt32(result);
return NO_ERROR;
} break;
case SET_BUFFER_COUNT: {