summaryrefslogtreecommitdiff
path: root/libs/gui/BitTube.cpp
diff options
context:
space:
mode:
author Alec Mouri <alecmouri@google.com> 2020-08-07 23:34:42 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2020-08-07 23:34:42 +0000
commitfaa0b79d68e85f87546cc0ae65386c59b93f10f0 (patch)
tree5b036994870e65db0e819eb541db245a4ff6a515 /libs/gui/BitTube.cpp
parent30a2c45283ec51788084c2d516c9115fff733d0c (diff)
parent864d48037d8cee84d0c1a7d9044153c9d757f2e0 (diff)
Fix refresh rate callback fan-out for choreographer am: c080030e71 am: 864d48037d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/12329047 Change-Id: Ic0ca0a1cead095aa0ba3fa04dcf856d15327348f
Diffstat (limited to 'libs/gui/BitTube.cpp')
-rw-r--r--libs/gui/BitTube.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/libs/gui/BitTube.cpp b/libs/gui/BitTube.cpp
index ef7a6f54d9..351af652e2 100644
--- a/libs/gui/BitTube.cpp
+++ b/libs/gui/BitTube.cpp
@@ -86,6 +86,10 @@ void BitTube::setReceiveFd(base::unique_fd&& receiveFd) {
mReceiveFd = std::move(receiveFd);
}
+void BitTube::setSendFd(base::unique_fd&& sendFd) {
+ mSendFd = std::move(sendFd);
+}
+
ssize_t BitTube::write(void const* vaddr, size_t size) {
ssize_t err, len;
do {
@@ -115,6 +119,11 @@ status_t BitTube::writeToParcel(Parcel* reply) const {
status_t result = reply->writeDupFileDescriptor(mReceiveFd);
mReceiveFd.reset();
+ if (result != NO_ERROR) {
+ return result;
+ }
+ result = reply->writeDupFileDescriptor(mSendFd);
+ mSendFd.reset();
return result;
}
@@ -126,6 +135,13 @@ status_t BitTube::readFromParcel(const Parcel* parcel) {
ALOGE("BitTube::readFromParcel: can't dup file descriptor (%s)", strerror(error));
return -error;
}
+ mSendFd.reset(dup(parcel->readFileDescriptor()));
+ if (mSendFd < 0) {
+ mSendFd.reset();
+ int error = errno;
+ ALOGE("BitTube::readFromParcel: can't dup file descriptor (%s)", strerror(error));
+ return -error;
+ }
return NO_ERROR;
}