diff options
Diffstat (limited to 'libs/ui/Fence.cpp')
| -rw-r--r-- | libs/ui/Fence.cpp | 18 |
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--; } |