summaryrefslogtreecommitdiff
path: root/libs/ui/Fence.cpp
diff options
context:
space:
mode:
author Chia-I Wu <olv@google.com> 2017-12-27 11:10:20 -0800
committer Chia-I Wu <olv@google.com> 2017-12-27 12:43:33 -0800
commitdf1baddb6f4a13e7253ca547549b3157725c3121 (patch)
tree3b6526b0c753139f170f8d15b25fadc881c9e6dc /libs/ui/Fence.cpp
parent4d85b8c0a38c14f854af8ff85391b7a8d1170d5b (diff)
libui: use unique_fd in Fence
Use unique_fd internally. Add a constructor to create a Fence from a unique_fd. Test: boots Change-Id: I36e7a337885a6559ed6fe82c56b718f56108aaf8
Diffstat (limited to 'libs/ui/Fence.cpp')
-rw-r--r--libs/ui/Fence.cpp18
1 files changed, 6 insertions, 12 deletions
diff --git a/libs/ui/Fence.cpp b/libs/ui/Fence.cpp
index b67f4d9328..ff53aa8f25 100644
--- a/libs/ui/Fence.cpp
+++ b/libs/ui/Fence.cpp
@@ -37,18 +37,12 @@ namespace android {
const sp<Fence> Fence::NO_FENCE = sp<Fence>(new Fence);
-Fence::Fence() :
- mFenceFd(-1) {
-}
-
Fence::Fence(int fenceFd) :
mFenceFd(fenceFd) {
}
-Fence::~Fence() {
- if (mFenceFd != -1) {
- close(mFenceFd);
- }
+Fence::Fence(base::unique_fd fenceFd) :
+ mFenceFd(std::move(fenceFd)) {
}
status_t Fence::wait(int timeout) {
@@ -68,7 +62,7 @@ status_t Fence::waitForever(const char* logname) {
int warningTimeout = 3000;
int err = sync_wait(mFenceFd, warningTimeout);
if (err < 0 && errno == ETIME) {
- ALOGE("%s: fence %d didn't signal in %u ms", logname, mFenceFd,
+ ALOGE("%s: fence %d didn't signal in %u ms", logname, mFenceFd.get(),
warningTimeout);
err = sync_wait(mFenceFd, TIMEOUT_NEVER);
}
@@ -94,7 +88,7 @@ sp<Fence> Fence::merge(const char* name, const sp<Fence>& f1,
if (result == -1) {
status_t err = -errno;
ALOGE("merge: sync_merge(\"%s\", %d, %d) returned an error: %s (%d)",
- name, f1->mFenceFd, f2->mFenceFd,
+ name, f1->mFenceFd.get(), f2->mFenceFd.get(),
strerror(-err), err);
return NO_FENCE;
}
@@ -117,7 +111,7 @@ nsecs_t Fence::getSignalTime() const {
struct sync_fence_info_data* finfo = sync_fence_info(mFenceFd);
if (finfo == NULL) {
- ALOGE("sync_fence_info returned NULL for fd %d", mFenceFd);
+ ALOGE("sync_fence_info returned NULL for fd %d", mFenceFd.get());
return SIGNAL_TIME_INVALID;
}
if (finfo->status != 1) {
@@ -181,7 +175,7 @@ status_t Fence::unflatten(void const*& buffer, size_t& size, int const*& fds, si
}
if (numFds) {
- mFenceFd = *fds++;
+ mFenceFd.reset(*fds++);
count--;
}