Loading media/bufferpool/2.0/AccessorImpl.cpp +20 −12 Original line number Diff line number Diff line Loading @@ -308,7 +308,11 @@ void Accessor::Impl::BufferPool::Invalidation::onAck( ConnectionId conId, uint32_t msgId) { auto it = mAcks.find(conId); if (it == mAcks.end() || isMessageLater(msgId, it->second)) { if (it == mAcks.end()) { ALOGW("ACK from inconsistent connection! %lld", (long long)conId); return; } if (isMessageLater(msgId, it->second)) { mAcks[conId] = msgId; } } Loading @@ -327,7 +331,6 @@ void Accessor::Impl::BufferPool::Invalidation::onBufferInvalidated( } } channel.postInvalidation(msgId, it->mFrom, it->mTo); sInvalidator->addAccessor(mId, it->mImpl); it = mPendings.erase(it); continue; } Loading @@ -342,7 +345,6 @@ void Accessor::Impl::BufferPool::Invalidation::onInvalidationRequest( size_t left, BufferInvalidationChannel &channel, const std::shared_ptr<Accessor::Impl> &impl) { if (left == 0) { uint32_t msgId = 0; if (needsAck) { msgId = ++mInvalidationId; Loading @@ -352,14 +354,15 @@ void Accessor::Impl::BufferPool::Invalidation::onInvalidationRequest( } } ALOGV("bufferpool invalidation requested and queued"); if (left == 0) { channel.postInvalidation(msgId, from, to); sInvalidator->addAccessor(mId, impl); } else { // TODO: sending hint message? ALOGV("bufferpool invalidation requested and pending"); Pending pending(needsAck, from, to, left, impl); mPendings.push_back(pending); } sInvalidator->addAccessor(mId, impl); } void Accessor::Impl::BufferPool::Invalidation::onHandleAck() { Loading @@ -373,6 +376,9 @@ void Accessor::Impl::BufferPool::Invalidation::onHandleAck() { (long long)it->first, it->second, mInvalidationId); Return<void> transResult = observer->onMessage(it->first, mInvalidationId); (void) transResult; // N.B: ignore possibility of onMessage oneway call being // lost. it->second = mInvalidationId; } else { ALOGV("bufferpool observer died %lld", (long long)it->first); deads.insert(it->first); Loading @@ -385,9 +391,11 @@ void Accessor::Impl::BufferPool::Invalidation::onHandleAck() { } } } // All invalidation Ids are synced. if (mPendings.size() == 0) { // All invalidation Ids are synced and no more pending invalidations. sInvalidator->delAccessor(mId); } } bool Accessor::Impl::BufferPool::handleOwnBuffer( ConnectionId connectionId, BufferId bufferId) { Loading Loading
media/bufferpool/2.0/AccessorImpl.cpp +20 −12 Original line number Diff line number Diff line Loading @@ -308,7 +308,11 @@ void Accessor::Impl::BufferPool::Invalidation::onAck( ConnectionId conId, uint32_t msgId) { auto it = mAcks.find(conId); if (it == mAcks.end() || isMessageLater(msgId, it->second)) { if (it == mAcks.end()) { ALOGW("ACK from inconsistent connection! %lld", (long long)conId); return; } if (isMessageLater(msgId, it->second)) { mAcks[conId] = msgId; } } Loading @@ -327,7 +331,6 @@ void Accessor::Impl::BufferPool::Invalidation::onBufferInvalidated( } } channel.postInvalidation(msgId, it->mFrom, it->mTo); sInvalidator->addAccessor(mId, it->mImpl); it = mPendings.erase(it); continue; } Loading @@ -342,7 +345,6 @@ void Accessor::Impl::BufferPool::Invalidation::onInvalidationRequest( size_t left, BufferInvalidationChannel &channel, const std::shared_ptr<Accessor::Impl> &impl) { if (left == 0) { uint32_t msgId = 0; if (needsAck) { msgId = ++mInvalidationId; Loading @@ -352,14 +354,15 @@ void Accessor::Impl::BufferPool::Invalidation::onInvalidationRequest( } } ALOGV("bufferpool invalidation requested and queued"); if (left == 0) { channel.postInvalidation(msgId, from, to); sInvalidator->addAccessor(mId, impl); } else { // TODO: sending hint message? ALOGV("bufferpool invalidation requested and pending"); Pending pending(needsAck, from, to, left, impl); mPendings.push_back(pending); } sInvalidator->addAccessor(mId, impl); } void Accessor::Impl::BufferPool::Invalidation::onHandleAck() { Loading @@ -373,6 +376,9 @@ void Accessor::Impl::BufferPool::Invalidation::onHandleAck() { (long long)it->first, it->second, mInvalidationId); Return<void> transResult = observer->onMessage(it->first, mInvalidationId); (void) transResult; // N.B: ignore possibility of onMessage oneway call being // lost. it->second = mInvalidationId; } else { ALOGV("bufferpool observer died %lld", (long long)it->first); deads.insert(it->first); Loading @@ -385,9 +391,11 @@ void Accessor::Impl::BufferPool::Invalidation::onHandleAck() { } } } // All invalidation Ids are synced. if (mPendings.size() == 0) { // All invalidation Ids are synced and no more pending invalidations. sInvalidator->delAccessor(mId); } } bool Accessor::Impl::BufferPool::handleOwnBuffer( ConnectionId connectionId, BufferId bufferId) { Loading