From d491f1f632545f45217cb5d45b4e499346921ebc Mon Sep 17 00:00:00 2001 From: Sungtak Lee Date: Fri, 5 Oct 2018 15:56:56 -0700 Subject: [PATCH] bufferpool2.0: add invalidation observer Change-Id: Idf5cf48865d9b7b831c2890e9652774482af90b8 --- media/bufferpool/2.0/Accessor.cpp | 5 ++++- media/bufferpool/2.0/Accessor.h | 3 ++- media/bufferpool/2.0/AccessorImpl.cpp | 3 +++ media/bufferpool/2.0/BufferPoolClient.cpp | 2 ++ media/bufferpool/2.0/BufferPoolClient.h | 2 ++ 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/media/bufferpool/2.0/Accessor.cpp b/media/bufferpool/2.0/Accessor.cpp index b9837f7535..3eaea7c64f 100644 --- a/media/bufferpool/2.0/Accessor.cpp +++ b/media/bufferpool/2.0/Accessor.cpp @@ -114,7 +114,10 @@ sp Accessor::getConnectionDeathRecipient() { } // Methods from ::android::hardware::media::bufferpool::V2_0::IAccessor follow. -Return Accessor::connect(connect_cb _hidl_cb) { +Return Accessor::connect( + const sp<::android::hardware::media::bufferpool::V2_0::IObserver>& observer, + connect_cb _hidl_cb) { + (void)observer; sp connection; ConnectionId connectionId; const StatusDescriptor* fmqDesc; diff --git a/media/bufferpool/2.0/Accessor.h b/media/bufferpool/2.0/Accessor.h index fa2cb1b030..a718da1db9 100644 --- a/media/bufferpool/2.0/Accessor.h +++ b/media/bufferpool/2.0/Accessor.h @@ -18,6 +18,7 @@ #define ANDROID_HARDWARE_MEDIA_BUFFERPOOL_V2_0_ACCESSOR_H #include +#include #include #include #include @@ -79,7 +80,7 @@ private: */ struct Accessor : public IAccessor { // Methods from ::android::hardware::media::bufferpool::V2_0::IAccessor follow. - Return connect(connect_cb _hidl_cb) override; + Return connect(const sp<::android::hardware::media::bufferpool::V2_0::IObserver>& observer, connect_cb _hidl_cb) override; /** * Creates a buffer pool accessor which uses the specified allocator. diff --git a/media/bufferpool/2.0/AccessorImpl.cpp b/media/bufferpool/2.0/AccessorImpl.cpp index ef62d030f5..0ba6600e18 100644 --- a/media/bufferpool/2.0/AccessorImpl.cpp +++ b/media/bufferpool/2.0/AccessorImpl.cpp @@ -399,6 +399,9 @@ void Accessor::Impl::BufferPool::processStatusMessages() { case BufferStatus::TRANSFER_ERROR: ret = handleTransferResult(message); break; + case BufferStatus::INVALIDATION_ACK: + // TODO + break; } if (ret == false) { ALOGW("buffer status message processing failure - message : %d connection : %lld", diff --git a/media/bufferpool/2.0/BufferPoolClient.cpp b/media/bufferpool/2.0/BufferPoolClient.cpp index 4eeebb442a..0f763f7e28 100644 --- a/media/bufferpool/2.0/BufferPoolClient.cpp +++ b/media/bufferpool/2.0/BufferPoolClient.cpp @@ -262,11 +262,13 @@ BufferPoolClient::Impl::Impl(const sp &accessor) : mLocal(false), mValid(false), mAccessor(accessor), mSeqId(0), mLastEvictCacheUs(getTimestampNow()) { bool valid = false; + sp observer; // TODO sp& outConnection = mRemoteConnection; ConnectionId& id = mConnectionId; std::unique_ptr& outChannel = mReleasing.mStatusChannel; Return transResult = accessor->connect( + observer, [&valid, &outConnection, &id, &outChannel] (ResultStatus status, sp connection, ConnectionId connectionId, const StatusDescriptor& desc, diff --git a/media/bufferpool/2.0/BufferPoolClient.h b/media/bufferpool/2.0/BufferPoolClient.h index 00d6839d31..1889ea3ce1 100644 --- a/media/bufferpool/2.0/BufferPoolClient.h +++ b/media/bufferpool/2.0/BufferPoolClient.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include "Accessor.h" @@ -33,6 +34,7 @@ namespace implementation { using ::android::hardware::media::bufferpool::V2_0::IAccessor; using ::android::hardware::media::bufferpool::V2_0::IConnection; +using ::android::hardware::media::bufferpool::V2_0::IObserver; using ::android::hardware::media::bufferpool::V2_0::ResultStatus; using ::android::sp;