Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b0eec511 authored by Fan Xu's avatar Fan Xu
Browse files

Cleanup unused logic for ProducerBuffer.Detach

ProducerBuffer.Detach is disabled during migration. Therefore, related
pdx rpc code is no longer needed and could be removed. This is also
required to move BufferNode off IonBuffer, as one of the constructor of
BufferNode is called inside these code.

Test: "atest buffer_hub-test" passed.
Bug: 112338294
Change-Id: I950a2d0f59362f217636da9310f7bfff23127092
parent 27631c9c
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -314,7 +314,6 @@ struct BufferHubRPC {
    kOpProducerGain,
    kOpConsumerAcquire,
    kOpConsumerRelease,
    kOpProducerBufferDetach,
    kOpConsumerBufferDetach,
    kOpCreateProducerQueue,
    kOpCreateConsumerQueue,
@@ -344,8 +343,6 @@ struct BufferHubRPC {
  PDX_REMOTE_METHOD(ConsumerAcquire, kOpConsumerAcquire, LocalFence(Void));
  PDX_REMOTE_METHOD(ConsumerRelease, kOpConsumerRelease,
                    void(LocalFence release_fence));
  PDX_REMOTE_METHOD(ProducerBufferDetach, kOpProducerBufferDetach,
                    LocalChannelHandle(Void));

  // Detaches a ConsumerBuffer from an existing producer/consumer set. Can only
  // be called when the consumer is the only consumer and it has exclusive
+4 −2
Original line number Diff line number Diff line
@@ -228,7 +228,9 @@ Status<LocalChannelHandle> ProducerBuffer::Detach() {
  ALOGW("ProducerBuffer::Detach: not supported operation during migration");
  return {};

  uint64_t buffer_state = buffer_state_->load();
  // TODO(b/112338294) Keep here for reference. Remove it after new logic is
  // written.
  /* uint64_t buffer_state = buffer_state_->load();
  if (!BufferHubDefs::IsBufferGained(buffer_state)) {
    // Can only detach a ProducerBuffer when it's in gained state.
    ALOGW("ProducerBuffer::Detach: The buffer (id=%d, state=0x%" PRIx64
@@ -242,7 +244,7 @@ Status<LocalChannelHandle> ProducerBuffer::Detach() {
  ALOGE_IF(!status,
           "ProducerBuffer::Detach: Failed to detach buffer (id=%d): %s.", id(),
           status.GetErrorMessage().c_str());
  return status;
  return status; */
}

}  // namespace dvr
+0 −9
Original line number Diff line number Diff line
@@ -12,15 +12,6 @@ using android::pdx::rpc::DispatchRemoteMethod;
namespace android {
namespace dvr {

BufferChannel::BufferChannel(BufferHubService* service, int buffer_id,
                             int channel_id, IonBuffer buffer,
                             size_t user_metadata_size)
    : BufferHubChannel(service, buffer_id, channel_id, kDetachedBufferType),
      buffer_node_(
          std::make_shared<BufferNode>(std::move(buffer), user_metadata_size)) {
  client_state_mask_ = buffer_node_->AddNewActiveClientsBitToMask();
}

BufferChannel::BufferChannel(BufferHubService* service, int buffer_id,
                             uint32_t width, uint32_t height,
                             uint32_t layer_count, uint32_t format,
+0 −9
Original line number Diff line number Diff line
@@ -256,15 +256,6 @@ pdx::Status<void> BufferHubService::HandleMessage(Message& message) {
          *this, &BufferHubService::OnCreateProducerQueue, message);
      return {};

    case BufferHubRPC::ProducerBufferDetach::Opcode:
      // In addition to the message handler in the ProducerChannel's
      // HandleMessage method, we also need to invalid the producer channel (and
      // all associated consumer channels). Note that this has to be done after
      // HandleMessage returns to make sure the IPC request has went back to the
      // client first.
      SetChannel(channel->channel_id(), nullptr);
      return {};

    default:
      return DefaultHandleMessage(message);
  }
+0 −6
Original line number Diff line number Diff line
@@ -15,12 +15,6 @@ void BufferNode::InitializeMetadata() {
      new (&metadata_header->active_clients_bit_mask) std::atomic<uint64_t>(0);
}

BufferNode::BufferNode(IonBuffer buffer, size_t user_metadata_size)
    : buffer_(std::move(buffer)) {
  metadata_ = BufferHubMetadata::Create(user_metadata_size);
  InitializeMetadata();
}

// Allocates a new BufferNode.
BufferNode::BufferNode(uint32_t width, uint32_t height, uint32_t layer_count,
                       uint32_t format, uint64_t usage,
Loading