summaryrefslogtreecommitdiff
path: root/libs/gui/IGraphicBufferConsumer.cpp
diff options
context:
space:
mode:
author Eino-Ville Talvala <etalvala@google.com> 2016-07-21 17:06:58 -0700
committer Eino-Ville Talvala <etalvala@google.com> 2016-07-22 12:27:04 -0700
commitbc2df65a3f3f4b8abaaaa2a4e576a3a42c2d30f3 (patch)
tree1d161800a08d5ea3ed3088a5c224173665267769 /libs/gui/IGraphicBufferConsumer.cpp
parentd16f6ae2bd1083ee29717829a39e93908bba2bf5 (diff)
BufferQueue consumers: Add discardFreeBuffer method
This method releases all free buffers owned by the buffer queue, in order to save memory (at the cost of potential future reallocation of buffers). Bug: 28695173 Change-Id: I458d10373e639e3144faf673af2ba01aca36e65a
Diffstat (limited to 'libs/gui/IGraphicBufferConsumer.cpp')
-rw-r--r--libs/gui/IGraphicBufferConsumer.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/libs/gui/IGraphicBufferConsumer.cpp b/libs/gui/IGraphicBufferConsumer.cpp
index 7c4379f41e..c8eff00e3f 100644
--- a/libs/gui/IGraphicBufferConsumer.cpp
+++ b/libs/gui/IGraphicBufferConsumer.cpp
@@ -52,6 +52,7 @@ enum {
SET_TRANSFORM_HINT,
GET_SIDEBAND_STREAM,
GET_OCCUPANCY_HISTORY,
+ DISCARD_FREE_BUFFERS,
DUMP,
};
@@ -286,6 +287,21 @@ public:
return result;
}
+ virtual status_t discardFreeBuffers() {
+ Parcel data, reply;
+ data.writeInterfaceToken(IGraphicBufferConsumer::getInterfaceDescriptor());
+ status_t error = remote()->transact(DISCARD_FREE_BUFFERS, data, &reply);
+ if (error != NO_ERROR) {
+ return error;
+ }
+ int32_t result = NO_ERROR;
+ error = reply.readInt32(&result);
+ if (error != NO_ERROR) {
+ return error;
+ }
+ return result;
+ }
+
virtual void dump(String8& result, const char* prefix) const {
Parcel data, reply;
data.writeInterfaceToken(IGraphicBufferConsumer::getInterfaceDescriptor());
@@ -454,6 +470,12 @@ status_t BnGraphicBufferConsumer::onTransact(
}
return NO_ERROR;
}
+ case DISCARD_FREE_BUFFERS: {
+ CHECK_INTERFACE(IGraphicBufferConsumer, data, reply);
+ status_t result = discardFreeBuffers();
+ status_t error = reply->writeInt32(result);
+ return error;
+ }
case DUMP: {
CHECK_INTERFACE(IGraphicBufferConsumer, data, reply);
String8 result = data.readString8();