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

Commit fd595873 authored by Jiwen 'Steve' Cai's avatar Jiwen 'Steve' Cai
Browse files

Remove GraphicBuffer accessor from DetachedBuffer

Those accessor are not used outside of buffer_hub-test. Moreover, in
the new design, GraphicBuffer will depend on DetachedBuffer rather
than DetachedBuffer depending on GraphicBuffer.

Bug: 112010261
Bug: 112940221
Test: atest buffer_hub-test
Change-Id: I78b5ea8b195b8502fc8bdcda48ca600f6408897a
parent 7b58030e
Loading
Loading
Loading
Loading
+0 −40
Original line number Diff line number Diff line
@@ -795,8 +795,6 @@ TEST_F(LibBufferHubTest, TestDetachBufferFromProducer) {
  EXPECT_TRUE(d->IsConnected());
  EXPECT_TRUE(d->IsValid());

  ASSERT_TRUE(d->buffer() != nullptr);
  EXPECT_EQ(d->buffer()->initCheck(), 0);
  EXPECT_EQ(d->id(), p_id);
}

@@ -808,7 +806,6 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBufferFails) {

  EXPECT_FALSE(b1->IsConnected());
  EXPECT_FALSE(b1->IsValid());
  EXPECT_TRUE(b1->buffer() == nullptr);

  // Buffer Creation will fail: user metadata size too large.
  auto b2 = DetachedBuffer::Create(
@@ -817,7 +814,6 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBufferFails) {

  EXPECT_FALSE(b2->IsConnected());
  EXPECT_FALSE(b2->IsValid());
  EXPECT_TRUE(b2->buffer() == nullptr);

  // Buffer Creation will fail: user metadata size too large.
  auto b3 = DetachedBuffer::Create(
@@ -827,50 +823,14 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBufferFails) {

  EXPECT_FALSE(b3->IsConnected());
  EXPECT_FALSE(b3->IsValid());
  EXPECT_TRUE(b3->buffer() == nullptr);
}

TEST_F(LibBufferHubTest, TestCreateDetachedBuffer) {
  auto b1 = DetachedBuffer::Create(kWidth, kHeight, kLayerCount, kFormat,
                                   kUsage, kUserMetadataSize);
  int b1_id = b1->id();

  EXPECT_TRUE(b1->IsConnected());
  EXPECT_TRUE(b1->IsValid());
  ASSERT_TRUE(b1->buffer() != nullptr);
  EXPECT_NE(b1->id(), 0);
  EXPECT_EQ(b1->buffer()->initCheck(), 0);
  EXPECT_FALSE(b1->buffer()->isDetachedBuffer());

  // Takes a standalone GraphicBuffer which still holds on an
  // PDX::LocalChannelHandle towards BufferHub.
  sp<GraphicBuffer> g1 = b1->TakeGraphicBuffer();
  ASSERT_TRUE(g1 != nullptr);
  EXPECT_TRUE(g1->isDetachedBuffer());

  EXPECT_FALSE(b1->IsConnected());
  EXPECT_FALSE(b1->IsValid());
  EXPECT_TRUE(b1->buffer() == nullptr);

  sp<GraphicBuffer> g2 = b1->TakeGraphicBuffer();
  ASSERT_TRUE(g2 == nullptr);

  auto h1 = g1->takeDetachedBufferHandle();
  ASSERT_TRUE(h1 != nullptr);
  ASSERT_TRUE(h1->isValid());
  EXPECT_FALSE(g1->isDetachedBuffer());

  auto b2 = DetachedBuffer::Import(std::move(h1->handle()));
  ASSERT_FALSE(h1->isValid());
  EXPECT_TRUE(b2->IsConnected());
  EXPECT_TRUE(b2->IsValid());

  ASSERT_TRUE(b2->buffer() != nullptr);
  EXPECT_EQ(b2->buffer()->initCheck(), 0);

  // The newly created DetachedBuffer should share the original buffer_id.
  EXPECT_EQ(b2->id(), b1_id);
  EXPECT_FALSE(b2->buffer()->isDetachedBuffer());
}

TEST_F(LibBufferHubTest, TestPromoteDetachedBuffer) {
+0 −17
Original line number Diff line number Diff line
@@ -162,22 +162,5 @@ Status<LocalChannelHandle> DetachedBuffer::Duplicate() {
  return status_or_handle;
}

sp<GraphicBuffer> DetachedBuffer::TakeGraphicBuffer() {
  if (!client_.IsValid() || !buffer_.buffer()) {
    ALOGE("DetachedBuffer::TakeGraphicBuffer: Invalid buffer.");
    return nullptr;
  }

  // Technically this should never happen.
  LOG_FATAL_IF(
      buffer_.buffer()->isDetachedBuffer(),
      "DetachedBuffer::TakeGraphicBuffer: GraphicBuffer is already detached.");

  sp<GraphicBuffer> buffer = std::move(buffer_.buffer());
  buffer->setDetachedBufferHandle(
      DetachedBufferHandle::Create(client_.TakeChannelHandle()));
  return buffer;
}

}  // namespace dvr
}  // namespace android
+0 −7
Original line number Diff line number Diff line
@@ -28,8 +28,6 @@ class DetachedBuffer {
  DetachedBuffer(const DetachedBuffer&) = delete;
  void operator=(const DetachedBuffer&) = delete;

  const sp<GraphicBuffer>& buffer() const { return buffer_.buffer(); }

  // Gets ID of the buffer client. All DetachedBuffer clients derived from the
  // same buffer in bufferhubd share the same buffer id.
  int id() const { return id_; }
@@ -69,11 +67,6 @@ class DetachedBuffer {
  // Creates a DetachedBuffer from an existing one.
  pdx::Status<pdx::LocalChannelHandle> Duplicate();

  // Takes the underlying graphic buffer out of this DetachedBuffer. This call
  // immediately invalidates this DetachedBuffer object and transfers the
  // underlying pdx::LocalChannelHandle into the GraphicBuffer.
  sp<GraphicBuffer> TakeGraphicBuffer();

 private:
  DetachedBuffer(uint32_t width, uint32_t height, uint32_t layer_count,
                 uint32_t format, uint64_t usage, size_t user_metadata_size);