summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--codec2/vndk/bufferpool/Connection.cpp26
1 files changed, 19 insertions, 7 deletions
diff --git a/codec2/vndk/bufferpool/Connection.cpp b/codec2/vndk/bufferpool/Connection.cpp
index a89b7b3..54f5c21 100644
--- a/codec2/vndk/bufferpool/Connection.cpp
+++ b/codec2/vndk/bufferpool/Connection.cpp
@@ -27,15 +27,27 @@ namespace implementation {
Return<void> Connection::fetch(uint64_t transactionId, uint32_t bufferId, fetch_cb _hidl_cb) {
ResultStatus status = ResultStatus::CRITICAL_ERROR;
if (mInitialized && mAccessor) {
- const native_handle_t *handle = NULL;
- status = mAccessor->fetch(
- mConnectionId, transactionId, bufferId, &handle);
- if (status == ResultStatus::OK) {
- _hidl_cb(status, Buffer{bufferId, handle});
- return Void();
+ if (bufferId != SYNC_BUFFERID) {
+ const native_handle_t *handle = NULL;
+ status = mAccessor->fetch(
+ mConnectionId, transactionId, bufferId, &handle);
+ if (status == ResultStatus::OK) {
+ Buffer buffer = {};
+ buffer.id = bufferId;
+ buffer.buffer = handle;
+ _hidl_cb(status, buffer);
+ return Void();
+ }
+ } else {
+ mAccessor->cleanUp(false);
}
}
- _hidl_cb(status, Buffer{0, nullptr});
+
+ Buffer buffer = {};
+ buffer.id = 0;
+ buffer.buffer = nullptr;
+
+ _hidl_cb(status, buffer);
return Void();
}