Loading cmds/dumpstate/dumpstate.cpp +2 −6 Original line number Diff line number Diff line Loading @@ -1519,6 +1519,8 @@ static void DumpstateTelephonyOnly() { SEC_TO_MSEC(10)); RunDumpsys("DUMPSYS", {"wifi"}, CommandOptions::WithTimeout(90).Build(), SEC_TO_MSEC(10)); RunDumpsys("BATTERYSTATS", {"batterystats"}, CommandOptions::WithTimeout(90).Build(), SEC_TO_MSEC(10)); printf("========================================================\n"); printf("== Running Application Services\n"); Loading @@ -1526,12 +1528,6 @@ static void DumpstateTelephonyOnly() { RunDumpsys("TELEPHONY SERVICES", {"activity", "service", "TelephonyDebugService"}); printf("========================================================\n"); printf("== Checkins\n"); printf("========================================================\n"); RunDumpsys("CHECKIN BATTERYSTATS", {"batterystats", "-c"}); printf("========================================================\n"); printf("== dumpstate: done (id %d)\n", ds.id_); printf("========================================================\n"); Loading libs/binder/PersistableBundle.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -39,8 +39,9 @@ using std::vector; using namespace ::android::binder; enum { // Keep in sync with BUNDLE_MAGIC in frameworks/base/core/java/android/os/BaseBundle.java. // Keep them in sync with BUNDLE_MAGIC* in frameworks/base/core/java/android/os/BaseBundle.java. BUNDLE_MAGIC = 0x4C444E42, BUNDLE_MAGIC_NATIVE = 0x4C444E44, }; namespace { Loading Loading @@ -99,7 +100,7 @@ status_t PersistableBundle::writeToParcel(Parcel* parcel) const { size_t length_pos = parcel->dataPosition(); RETURN_IF_FAILED(parcel->writeInt32(1)); // dummy, will hold length RETURN_IF_FAILED(parcel->writeInt32(BUNDLE_MAGIC)); RETURN_IF_FAILED(parcel->writeInt32(BUNDLE_MAGIC_NATIVE)); size_t start_pos = parcel->dataPosition(); RETURN_IF_FAILED(writeToParcelInner(parcel)); Loading Loading @@ -392,7 +393,7 @@ status_t PersistableBundle::readFromParcelInner(const Parcel* parcel, size_t len int32_t magic; RETURN_IF_FAILED(parcel->readInt32(&magic)); if (magic != BUNDLE_MAGIC) { if (magic != BUNDLE_MAGIC && magic != BUNDLE_MAGIC_NATIVE) { ALOGE("Bad magic number for PersistableBundle: 0x%08x", magic); return BAD_VALUE; } Loading libs/vr/libbufferhub/buffer_hub-test.cpp +90 −10 Original line number Diff line number Diff line Loading @@ -19,18 +19,18 @@ return result; \ })() using android::sp; using android::GraphicBuffer; using android::sp; using android::dvr::BufferConsumer; using android::dvr::BufferHubDefs::kConsumerStateMask; using android::dvr::BufferHubDefs::kMetadataHeaderSize; using android::dvr::BufferHubDefs::kProducerStateBit; using android::dvr::BufferProducer; using android::dvr::DetachedBuffer; using android::dvr::BufferHubDefs::IsBufferAcquired; using android::dvr::BufferHubDefs::IsBufferGained; using android::dvr::BufferHubDefs::IsBufferPosted; using android::dvr::BufferHubDefs::IsBufferAcquired; using android::dvr::BufferHubDefs::IsBufferReleased; using android::dvr::BufferProducer; using android::dvr::DetachedBuffer; using android::dvr::BufferHubDefs::kConsumerStateMask; using android::dvr::BufferHubDefs::kMetadataHeaderSize; using android::dvr::BufferHubDefs::kProducerStateBit; using android::pdx::LocalChannelHandle; using android::pdx::LocalHandle; using android::pdx::Status; Loading Loading @@ -376,8 +376,8 @@ TEST_F(LibBufferHubTest, TestMaxConsumers) { EXPECT_EQ(0, p->PostAsync(&metadata, invalid_fence)); EXPECT_TRUE(IsBufferPosted(p->buffer_state())); for (size_t i = 0; i < kMaxConsumerCount; i++) { EXPECT_TRUE(IsBufferPosted(cs[i]->buffer_state(), cs[i]->buffer_state_bit())); EXPECT_TRUE( IsBufferPosted(cs[i]->buffer_state(), cs[i]->buffer_state_bit())); EXPECT_LT(0, RETRY_EINTR(cs[i]->Poll(kPollTimeoutMs))); EXPECT_EQ(0, cs[i]->AcquireAsync(&metadata, &invalid_fence)); EXPECT_TRUE(IsBufferAcquired(p->buffer_state())); Loading Loading @@ -792,6 +792,7 @@ TEST_F(LibBufferHubTest, TestDetachBufferFromProducer) { // Detached buffer handle can be use to construct a new DetachedBuffer object. auto d = DetachedBuffer::Import(std::move(handle)); EXPECT_FALSE(handle.valid()); EXPECT_TRUE(d->IsConnected()); EXPECT_TRUE(d->IsValid()); ASSERT_TRUE(d->buffer() != nullptr); Loading @@ -805,6 +806,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBufferFails) { /*format=*/HAL_PIXEL_FORMAT_BLOB, kUsage, kUserMetadataSize); EXPECT_FALSE(b1->IsConnected()); EXPECT_FALSE(b1->IsValid()); EXPECT_TRUE(b1->buffer() == nullptr); Loading @@ -813,6 +815,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBufferFails) { kWidth, kHeight, kLayerCount, kFormat, kUsage, /*user_metadata_size=*/std::numeric_limits<size_t>::max()); EXPECT_FALSE(b2->IsConnected()); EXPECT_FALSE(b2->IsValid()); EXPECT_TRUE(b2->buffer() == nullptr); Loading @@ -822,6 +825,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBufferFails) { /*user_metadata_size=*/std::numeric_limits<size_t>::max() - kMetadataHeaderSize); EXPECT_FALSE(b3->IsConnected()); EXPECT_FALSE(b3->IsValid()); EXPECT_TRUE(b3->buffer() == nullptr); } Loading @@ -831,6 +835,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBuffer) { 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); Loading @@ -843,6 +848,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBuffer) { ASSERT_TRUE(g1 != nullptr); EXPECT_TRUE(g1->isDetachedBuffer()); EXPECT_FALSE(b1->IsConnected()); EXPECT_FALSE(b1->IsValid()); EXPECT_TRUE(b1->buffer() == nullptr); Loading @@ -856,6 +862,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBuffer) { 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); Loading @@ -865,3 +872,76 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBuffer) { EXPECT_EQ(b2->id(), b1_id); EXPECT_FALSE(b2->buffer()->isDetachedBuffer()); } TEST_F(LibBufferHubTest, TestPromoteDetachedBuffer) { auto b1 = DetachedBuffer::Create(kWidth, kHeight, kLayerCount, kFormat, kUsage, kUserMetadataSize); int b1_id = b1->id(); EXPECT_TRUE(b1->IsValid()); auto status_or_handle = b1->Promote(); EXPECT_TRUE(status_or_handle); // The detached buffer should have hangup. EXPECT_GT(RETRY_EINTR(b1->Poll(kPollTimeoutMs)), 0); auto status_or_int = b1->GetEventMask(POLLHUP); EXPECT_TRUE(status_or_int.ok()); EXPECT_EQ(status_or_int.get(), POLLHUP); // The buffer client is still considered as connected but invalid. EXPECT_TRUE(b1->IsConnected()); EXPECT_FALSE(b1->IsValid()); // Gets the channel handle for the producer. LocalChannelHandle h1 = status_or_handle.take(); EXPECT_TRUE(h1.valid()); std::unique_ptr<BufferProducer> p1 = BufferProducer::Import(std::move(h1)); EXPECT_FALSE(h1.valid()); ASSERT_TRUE(p1 != nullptr); int p1_id = p1->id(); // A newly promoted ProducerBuffer should inherit the same buffer id. EXPECT_EQ(b1_id, p1_id); EXPECT_TRUE(IsBufferGained(p1->buffer_state())); } TEST_F(LibBufferHubTest, TestDetachThenPromote) { std::unique_ptr<BufferProducer> p1 = BufferProducer::Create( kWidth, kHeight, kFormat, kUsage, sizeof(uint64_t)); ASSERT_TRUE(p1.get() != nullptr); int p1_id = p1->id(); // Detached the producer. auto status_or_handle = p1->Detach(); EXPECT_TRUE(status_or_handle.ok()); LocalChannelHandle h1 = status_or_handle.take(); EXPECT_TRUE(h1.valid()); // Detached buffer handle can be use to construct a new DetachedBuffer object. auto b1 = DetachedBuffer::Import(std::move(h1)); EXPECT_FALSE(h1.valid()); EXPECT_TRUE(b1->IsValid()); int b1_id = b1->id(); EXPECT_EQ(b1_id, p1_id); // Promote the detached buffer. status_or_handle = b1->Promote(); // The buffer client is still considered as connected but invalid. EXPECT_TRUE(b1->IsConnected()); EXPECT_FALSE(b1->IsValid()); EXPECT_TRUE(status_or_handle.ok()); // Gets the channel handle for the producer. LocalChannelHandle h2 = status_or_handle.take(); EXPECT_TRUE(h2.valid()); std::unique_ptr<BufferProducer> p2 = BufferProducer::Import(std::move(h2)); EXPECT_FALSE(h2.valid()); ASSERT_TRUE(p2 != nullptr); int p2_id = p2->id(); // A newly promoted ProducerBuffer should inherit the same buffer id. EXPECT_EQ(b1_id, p2_id); EXPECT_TRUE(IsBufferGained(p2->buffer_state())); } libs/vr/libbufferhub/detached_buffer.cpp +24 −3 Original line number Diff line number Diff line Loading @@ -3,7 +3,11 @@ #include <pdx/file_handle.h> #include <ui/DetachedBufferHandle.h> #include <poll.h> using android::pdx::LocalChannelHandle; using android::pdx::LocalHandle; using android::pdx::Status; namespace android { namespace dvr { Loading Loading @@ -78,9 +82,26 @@ int DetachedBuffer::ImportGraphicBuffer() { return 0; } std::unique_ptr<BufferProducer> DetachedBuffer::Promote() { ALOGE("DetachedBuffer::Promote: Not implemented."); return nullptr; int DetachedBuffer::Poll(int timeout_ms) { ATRACE_NAME("DetachedBuffer::Poll"); pollfd p = {client_.event_fd(), POLLIN, 0}; return poll(&p, 1, timeout_ms); } Status<LocalChannelHandle> DetachedBuffer::Promote() { ATRACE_NAME("DetachedBuffer::Promote"); ALOGD_IF(TRACE, "DetachedBuffer::Promote: id=%d.", id_); auto status_or_handle = client_.InvokeRemoteMethod<DetachedBufferRPC::Promote>(); if (status_or_handle.ok()) { // Invalidate the buffer. buffer_ = {}; } else { ALOGE("DetachedBuffer::Promote: Failed to promote buffer (id=%d): %s.", id_, status_or_handle.GetErrorMessage().c_str()); } return status_or_handle; } sp<GraphicBuffer> DetachedBuffer::TakeGraphicBuffer() { Loading libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h +4 −4 Original line number Diff line number Diff line Loading @@ -18,17 +18,17 @@ namespace dvr { class BufferHubClient : public pdx::Client { public: using LocalChannelHandle = pdx::LocalChannelHandle; BufferHubClient(); explicit BufferHubClient(LocalChannelHandle channel_handle); explicit BufferHubClient(pdx::LocalChannelHandle channel_handle); bool IsValid() const; LocalChannelHandle TakeChannelHandle(); pdx::LocalChannelHandle TakeChannelHandle(); using pdx::Client::Close; using pdx::Client::GetChannel; using pdx::Client::InvokeRemoteMethod; using pdx::Client::IsConnected; using pdx::Client::event_fd; }; class BufferHubBuffer : public pdx::Client { Loading Loading
cmds/dumpstate/dumpstate.cpp +2 −6 Original line number Diff line number Diff line Loading @@ -1519,6 +1519,8 @@ static void DumpstateTelephonyOnly() { SEC_TO_MSEC(10)); RunDumpsys("DUMPSYS", {"wifi"}, CommandOptions::WithTimeout(90).Build(), SEC_TO_MSEC(10)); RunDumpsys("BATTERYSTATS", {"batterystats"}, CommandOptions::WithTimeout(90).Build(), SEC_TO_MSEC(10)); printf("========================================================\n"); printf("== Running Application Services\n"); Loading @@ -1526,12 +1528,6 @@ static void DumpstateTelephonyOnly() { RunDumpsys("TELEPHONY SERVICES", {"activity", "service", "TelephonyDebugService"}); printf("========================================================\n"); printf("== Checkins\n"); printf("========================================================\n"); RunDumpsys("CHECKIN BATTERYSTATS", {"batterystats", "-c"}); printf("========================================================\n"); printf("== dumpstate: done (id %d)\n", ds.id_); printf("========================================================\n"); Loading
libs/binder/PersistableBundle.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -39,8 +39,9 @@ using std::vector; using namespace ::android::binder; enum { // Keep in sync with BUNDLE_MAGIC in frameworks/base/core/java/android/os/BaseBundle.java. // Keep them in sync with BUNDLE_MAGIC* in frameworks/base/core/java/android/os/BaseBundle.java. BUNDLE_MAGIC = 0x4C444E42, BUNDLE_MAGIC_NATIVE = 0x4C444E44, }; namespace { Loading Loading @@ -99,7 +100,7 @@ status_t PersistableBundle::writeToParcel(Parcel* parcel) const { size_t length_pos = parcel->dataPosition(); RETURN_IF_FAILED(parcel->writeInt32(1)); // dummy, will hold length RETURN_IF_FAILED(parcel->writeInt32(BUNDLE_MAGIC)); RETURN_IF_FAILED(parcel->writeInt32(BUNDLE_MAGIC_NATIVE)); size_t start_pos = parcel->dataPosition(); RETURN_IF_FAILED(writeToParcelInner(parcel)); Loading Loading @@ -392,7 +393,7 @@ status_t PersistableBundle::readFromParcelInner(const Parcel* parcel, size_t len int32_t magic; RETURN_IF_FAILED(parcel->readInt32(&magic)); if (magic != BUNDLE_MAGIC) { if (magic != BUNDLE_MAGIC && magic != BUNDLE_MAGIC_NATIVE) { ALOGE("Bad magic number for PersistableBundle: 0x%08x", magic); return BAD_VALUE; } Loading
libs/vr/libbufferhub/buffer_hub-test.cpp +90 −10 Original line number Diff line number Diff line Loading @@ -19,18 +19,18 @@ return result; \ })() using android::sp; using android::GraphicBuffer; using android::sp; using android::dvr::BufferConsumer; using android::dvr::BufferHubDefs::kConsumerStateMask; using android::dvr::BufferHubDefs::kMetadataHeaderSize; using android::dvr::BufferHubDefs::kProducerStateBit; using android::dvr::BufferProducer; using android::dvr::DetachedBuffer; using android::dvr::BufferHubDefs::IsBufferAcquired; using android::dvr::BufferHubDefs::IsBufferGained; using android::dvr::BufferHubDefs::IsBufferPosted; using android::dvr::BufferHubDefs::IsBufferAcquired; using android::dvr::BufferHubDefs::IsBufferReleased; using android::dvr::BufferProducer; using android::dvr::DetachedBuffer; using android::dvr::BufferHubDefs::kConsumerStateMask; using android::dvr::BufferHubDefs::kMetadataHeaderSize; using android::dvr::BufferHubDefs::kProducerStateBit; using android::pdx::LocalChannelHandle; using android::pdx::LocalHandle; using android::pdx::Status; Loading Loading @@ -376,8 +376,8 @@ TEST_F(LibBufferHubTest, TestMaxConsumers) { EXPECT_EQ(0, p->PostAsync(&metadata, invalid_fence)); EXPECT_TRUE(IsBufferPosted(p->buffer_state())); for (size_t i = 0; i < kMaxConsumerCount; i++) { EXPECT_TRUE(IsBufferPosted(cs[i]->buffer_state(), cs[i]->buffer_state_bit())); EXPECT_TRUE( IsBufferPosted(cs[i]->buffer_state(), cs[i]->buffer_state_bit())); EXPECT_LT(0, RETRY_EINTR(cs[i]->Poll(kPollTimeoutMs))); EXPECT_EQ(0, cs[i]->AcquireAsync(&metadata, &invalid_fence)); EXPECT_TRUE(IsBufferAcquired(p->buffer_state())); Loading Loading @@ -792,6 +792,7 @@ TEST_F(LibBufferHubTest, TestDetachBufferFromProducer) { // Detached buffer handle can be use to construct a new DetachedBuffer object. auto d = DetachedBuffer::Import(std::move(handle)); EXPECT_FALSE(handle.valid()); EXPECT_TRUE(d->IsConnected()); EXPECT_TRUE(d->IsValid()); ASSERT_TRUE(d->buffer() != nullptr); Loading @@ -805,6 +806,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBufferFails) { /*format=*/HAL_PIXEL_FORMAT_BLOB, kUsage, kUserMetadataSize); EXPECT_FALSE(b1->IsConnected()); EXPECT_FALSE(b1->IsValid()); EXPECT_TRUE(b1->buffer() == nullptr); Loading @@ -813,6 +815,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBufferFails) { kWidth, kHeight, kLayerCount, kFormat, kUsage, /*user_metadata_size=*/std::numeric_limits<size_t>::max()); EXPECT_FALSE(b2->IsConnected()); EXPECT_FALSE(b2->IsValid()); EXPECT_TRUE(b2->buffer() == nullptr); Loading @@ -822,6 +825,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBufferFails) { /*user_metadata_size=*/std::numeric_limits<size_t>::max() - kMetadataHeaderSize); EXPECT_FALSE(b3->IsConnected()); EXPECT_FALSE(b3->IsValid()); EXPECT_TRUE(b3->buffer() == nullptr); } Loading @@ -831,6 +835,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBuffer) { 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); Loading @@ -843,6 +848,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBuffer) { ASSERT_TRUE(g1 != nullptr); EXPECT_TRUE(g1->isDetachedBuffer()); EXPECT_FALSE(b1->IsConnected()); EXPECT_FALSE(b1->IsValid()); EXPECT_TRUE(b1->buffer() == nullptr); Loading @@ -856,6 +862,7 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBuffer) { 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); Loading @@ -865,3 +872,76 @@ TEST_F(LibBufferHubTest, TestCreateDetachedBuffer) { EXPECT_EQ(b2->id(), b1_id); EXPECT_FALSE(b2->buffer()->isDetachedBuffer()); } TEST_F(LibBufferHubTest, TestPromoteDetachedBuffer) { auto b1 = DetachedBuffer::Create(kWidth, kHeight, kLayerCount, kFormat, kUsage, kUserMetadataSize); int b1_id = b1->id(); EXPECT_TRUE(b1->IsValid()); auto status_or_handle = b1->Promote(); EXPECT_TRUE(status_or_handle); // The detached buffer should have hangup. EXPECT_GT(RETRY_EINTR(b1->Poll(kPollTimeoutMs)), 0); auto status_or_int = b1->GetEventMask(POLLHUP); EXPECT_TRUE(status_or_int.ok()); EXPECT_EQ(status_or_int.get(), POLLHUP); // The buffer client is still considered as connected but invalid. EXPECT_TRUE(b1->IsConnected()); EXPECT_FALSE(b1->IsValid()); // Gets the channel handle for the producer. LocalChannelHandle h1 = status_or_handle.take(); EXPECT_TRUE(h1.valid()); std::unique_ptr<BufferProducer> p1 = BufferProducer::Import(std::move(h1)); EXPECT_FALSE(h1.valid()); ASSERT_TRUE(p1 != nullptr); int p1_id = p1->id(); // A newly promoted ProducerBuffer should inherit the same buffer id. EXPECT_EQ(b1_id, p1_id); EXPECT_TRUE(IsBufferGained(p1->buffer_state())); } TEST_F(LibBufferHubTest, TestDetachThenPromote) { std::unique_ptr<BufferProducer> p1 = BufferProducer::Create( kWidth, kHeight, kFormat, kUsage, sizeof(uint64_t)); ASSERT_TRUE(p1.get() != nullptr); int p1_id = p1->id(); // Detached the producer. auto status_or_handle = p1->Detach(); EXPECT_TRUE(status_or_handle.ok()); LocalChannelHandle h1 = status_or_handle.take(); EXPECT_TRUE(h1.valid()); // Detached buffer handle can be use to construct a new DetachedBuffer object. auto b1 = DetachedBuffer::Import(std::move(h1)); EXPECT_FALSE(h1.valid()); EXPECT_TRUE(b1->IsValid()); int b1_id = b1->id(); EXPECT_EQ(b1_id, p1_id); // Promote the detached buffer. status_or_handle = b1->Promote(); // The buffer client is still considered as connected but invalid. EXPECT_TRUE(b1->IsConnected()); EXPECT_FALSE(b1->IsValid()); EXPECT_TRUE(status_or_handle.ok()); // Gets the channel handle for the producer. LocalChannelHandle h2 = status_or_handle.take(); EXPECT_TRUE(h2.valid()); std::unique_ptr<BufferProducer> p2 = BufferProducer::Import(std::move(h2)); EXPECT_FALSE(h2.valid()); ASSERT_TRUE(p2 != nullptr); int p2_id = p2->id(); // A newly promoted ProducerBuffer should inherit the same buffer id. EXPECT_EQ(b1_id, p2_id); EXPECT_TRUE(IsBufferGained(p2->buffer_state())); }
libs/vr/libbufferhub/detached_buffer.cpp +24 −3 Original line number Diff line number Diff line Loading @@ -3,7 +3,11 @@ #include <pdx/file_handle.h> #include <ui/DetachedBufferHandle.h> #include <poll.h> using android::pdx::LocalChannelHandle; using android::pdx::LocalHandle; using android::pdx::Status; namespace android { namespace dvr { Loading Loading @@ -78,9 +82,26 @@ int DetachedBuffer::ImportGraphicBuffer() { return 0; } std::unique_ptr<BufferProducer> DetachedBuffer::Promote() { ALOGE("DetachedBuffer::Promote: Not implemented."); return nullptr; int DetachedBuffer::Poll(int timeout_ms) { ATRACE_NAME("DetachedBuffer::Poll"); pollfd p = {client_.event_fd(), POLLIN, 0}; return poll(&p, 1, timeout_ms); } Status<LocalChannelHandle> DetachedBuffer::Promote() { ATRACE_NAME("DetachedBuffer::Promote"); ALOGD_IF(TRACE, "DetachedBuffer::Promote: id=%d.", id_); auto status_or_handle = client_.InvokeRemoteMethod<DetachedBufferRPC::Promote>(); if (status_or_handle.ok()) { // Invalidate the buffer. buffer_ = {}; } else { ALOGE("DetachedBuffer::Promote: Failed to promote buffer (id=%d): %s.", id_, status_or_handle.GetErrorMessage().c_str()); } return status_or_handle; } sp<GraphicBuffer> DetachedBuffer::TakeGraphicBuffer() { Loading
libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h +4 −4 Original line number Diff line number Diff line Loading @@ -18,17 +18,17 @@ namespace dvr { class BufferHubClient : public pdx::Client { public: using LocalChannelHandle = pdx::LocalChannelHandle; BufferHubClient(); explicit BufferHubClient(LocalChannelHandle channel_handle); explicit BufferHubClient(pdx::LocalChannelHandle channel_handle); bool IsValid() const; LocalChannelHandle TakeChannelHandle(); pdx::LocalChannelHandle TakeChannelHandle(); using pdx::Client::Close; using pdx::Client::GetChannel; using pdx::Client::InvokeRemoteMethod; using pdx::Client::IsConnected; using pdx::Client::event_fd; }; class BufferHubBuffer : public pdx::Client { Loading