bufferpool2.0: add invalidation observer

Change-Id: Idf5cf48865d9b7b831c2890e9652774482af90b8
gugelfrei
Sungtak Lee 6 years ago
parent 5e0659c822
commit d491f1f632

@ -114,7 +114,10 @@ sp<ConnectionDeathRecipient> Accessor::getConnectionDeathRecipient() {
}
// Methods from ::android::hardware::media::bufferpool::V2_0::IAccessor follow.
Return<void> Accessor::connect(connect_cb _hidl_cb) {
Return<void> Accessor::connect(
const sp<::android::hardware::media::bufferpool::V2_0::IObserver>& observer,
connect_cb _hidl_cb) {
(void)observer;
sp<Connection> connection;
ConnectionId connectionId;
const StatusDescriptor* fmqDesc;

@ -18,6 +18,7 @@
#define ANDROID_HARDWARE_MEDIA_BUFFERPOOL_V2_0_ACCESSOR_H
#include <android/hardware/media/bufferpool/2.0/IAccessor.h>
#include <android/hardware/media/bufferpool/2.0/IObserver.h>
#include <bufferpool/BufferPoolTypes.h>
#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
@ -79,7 +80,7 @@ private:
*/
struct Accessor : public IAccessor {
// Methods from ::android::hardware::media::bufferpool::V2_0::IAccessor follow.
Return<void> connect(connect_cb _hidl_cb) override;
Return<void> 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.

@ -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",

@ -262,11 +262,13 @@ BufferPoolClient::Impl::Impl(const sp<IAccessor> &accessor)
: mLocal(false), mValid(false), mAccessor(accessor), mSeqId(0),
mLastEvictCacheUs(getTimestampNow()) {
bool valid = false;
sp<IObserver> observer; // TODO
sp<IConnection>& outConnection = mRemoteConnection;
ConnectionId& id = mConnectionId;
std::unique_ptr<BufferStatusChannel>& outChannel =
mReleasing.mStatusChannel;
Return<void> transResult = accessor->connect(
observer,
[&valid, &outConnection, &id, &outChannel]
(ResultStatus status, sp<IConnection> connection,
ConnectionId connectionId, const StatusDescriptor& desc,

@ -20,6 +20,7 @@
#include <memory>
#include <android/hardware/media/bufferpool/2.0/IAccessor.h>
#include <android/hardware/media/bufferpool/2.0/IConnection.h>
#include <android/hardware/media/bufferpool/2.0/IObserver.h>
#include <bufferpool/BufferPoolTypes.h>
#include <cutils/native_handle.h>
#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;

Loading…
Cancel
Save