Loading libs/ui/BufferHubBuffer.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -180,14 +180,14 @@ int BufferHubBuffer::initWithBufferTraits(const BufferTraits& bufferTraits) { return -EINVAL; } const int eventFd = bufferTraits.bufferInfo->data[1]; // Import fds. Dup fds because hidl_handle owns the fds. const int eventFd = fcntl(bufferTraits.bufferInfo->data[1], F_DUPFD_CLOEXEC, 0); if (eventFd < 0) { ALOGE("%s: Received a invalid event fd!", __FUNCTION__); return -EINVAL; } mEventFd = BufferHubEventFd(eventFd); // Import the metadata. Dup since hidl_handle owns the fd unique_fd ashmemFd(fcntl(bufferTraits.bufferInfo->data[0], F_DUPFD_CLOEXEC, 0)); mMetadata = BufferHubMetadata::Import(std::move(ashmemFd)); Loading libs/ui/tests/BufferHubBuffer_test.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #define LOG_TAG "BufferHubBufferTest" #include <errno.h> #include <sys/epoll.h> #include <android/hardware_buffer.h> Loading Loading @@ -166,14 +167,16 @@ TEST_F(BufferHubBufferTest, DuplicateAndImportBuffer) { // The event fd should behave like duped event fds. const BufferHubEventFd& eventFd1 = b1->eventFd(); ASSERT_GE(eventFd1.get(), 0); const BufferHubEventFd& eventFd2 = b2->eventFd(); ASSERT_GE(eventFd2.get(), 0); base::unique_fd epollFd(epoll_create(64)); ASSERT_GE(epollFd.get(), 0); // Add eventFd1 to epoll set, and signal eventFd2. epoll_event e = {.events = EPOLLIN | EPOLLET, .data = {.u32 = 0}}; ASSERT_EQ(epoll_ctl(epollFd.get(), EPOLL_CTL_ADD, eventFd1.get(), &e), 0); ASSERT_EQ(epoll_ctl(epollFd.get(), EPOLL_CTL_ADD, eventFd1.get(), &e), 0) << strerror(errno); std::array<epoll_event, 1> events; EXPECT_EQ(epoll_wait(epollFd.get(), events.data(), events.size(), 0), 0); Loading Loading
libs/ui/BufferHubBuffer.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -180,14 +180,14 @@ int BufferHubBuffer::initWithBufferTraits(const BufferTraits& bufferTraits) { return -EINVAL; } const int eventFd = bufferTraits.bufferInfo->data[1]; // Import fds. Dup fds because hidl_handle owns the fds. const int eventFd = fcntl(bufferTraits.bufferInfo->data[1], F_DUPFD_CLOEXEC, 0); if (eventFd < 0) { ALOGE("%s: Received a invalid event fd!", __FUNCTION__); return -EINVAL; } mEventFd = BufferHubEventFd(eventFd); // Import the metadata. Dup since hidl_handle owns the fd unique_fd ashmemFd(fcntl(bufferTraits.bufferInfo->data[0], F_DUPFD_CLOEXEC, 0)); mMetadata = BufferHubMetadata::Import(std::move(ashmemFd)); Loading
libs/ui/tests/BufferHubBuffer_test.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #define LOG_TAG "BufferHubBufferTest" #include <errno.h> #include <sys/epoll.h> #include <android/hardware_buffer.h> Loading Loading @@ -166,14 +167,16 @@ TEST_F(BufferHubBufferTest, DuplicateAndImportBuffer) { // The event fd should behave like duped event fds. const BufferHubEventFd& eventFd1 = b1->eventFd(); ASSERT_GE(eventFd1.get(), 0); const BufferHubEventFd& eventFd2 = b2->eventFd(); ASSERT_GE(eventFd2.get(), 0); base::unique_fd epollFd(epoll_create(64)); ASSERT_GE(epollFd.get(), 0); // Add eventFd1 to epoll set, and signal eventFd2. epoll_event e = {.events = EPOLLIN | EPOLLET, .data = {.u32 = 0}}; ASSERT_EQ(epoll_ctl(epollFd.get(), EPOLL_CTL_ADD, eventFd1.get(), &e), 0); ASSERT_EQ(epoll_ctl(epollFd.get(), EPOLL_CTL_ADD, eventFd1.get(), &e), 0) << strerror(errno); std::array<epoll_event, 1> events; EXPECT_EQ(epoll_wait(epollFd.get(), events.data(), events.size(), 0), 0); Loading