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. // 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; sp<Connection> connection;
ConnectionId connectionId; ConnectionId connectionId;
const StatusDescriptor* fmqDesc; const StatusDescriptor* fmqDesc;

@ -18,6 +18,7 @@
#define ANDROID_HARDWARE_MEDIA_BUFFERPOOL_V2_0_ACCESSOR_H #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/IAccessor.h>
#include <android/hardware/media/bufferpool/2.0/IObserver.h>
#include <bufferpool/BufferPoolTypes.h> #include <bufferpool/BufferPoolTypes.h>
#include <hidl/MQDescriptor.h> #include <hidl/MQDescriptor.h>
#include <hidl/Status.h> #include <hidl/Status.h>
@ -79,7 +80,7 @@ private:
*/ */
struct Accessor : public IAccessor { struct Accessor : public IAccessor {
// Methods from ::android::hardware::media::bufferpool::V2_0::IAccessor follow. // 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. * Creates a buffer pool accessor which uses the specified allocator.

@ -399,6 +399,9 @@ void Accessor::Impl::BufferPool::processStatusMessages() {
case BufferStatus::TRANSFER_ERROR: case BufferStatus::TRANSFER_ERROR:
ret = handleTransferResult(message); ret = handleTransferResult(message);
break; break;
case BufferStatus::INVALIDATION_ACK:
// TODO
break;
} }
if (ret == false) { if (ret == false) {
ALOGW("buffer status message processing failure - message : %d connection : %lld", 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), : mLocal(false), mValid(false), mAccessor(accessor), mSeqId(0),
mLastEvictCacheUs(getTimestampNow()) { mLastEvictCacheUs(getTimestampNow()) {
bool valid = false; bool valid = false;
sp<IObserver> observer; // TODO
sp<IConnection>& outConnection = mRemoteConnection; sp<IConnection>& outConnection = mRemoteConnection;
ConnectionId& id = mConnectionId; ConnectionId& id = mConnectionId;
std::unique_ptr<BufferStatusChannel>& outChannel = std::unique_ptr<BufferStatusChannel>& outChannel =
mReleasing.mStatusChannel; mReleasing.mStatusChannel;
Return<void> transResult = accessor->connect( Return<void> transResult = accessor->connect(
observer,
[&valid, &outConnection, &id, &outChannel] [&valid, &outConnection, &id, &outChannel]
(ResultStatus status, sp<IConnection> connection, (ResultStatus status, sp<IConnection> connection,
ConnectionId connectionId, const StatusDescriptor& desc, ConnectionId connectionId, const StatusDescriptor& desc,

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

Loading…
Cancel
Save