diff options
| -rw-r--r-- | codec2/vndk/bufferpool/Connection.cpp | 26 |
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(); } |
