diff options
author | Mathias Agopian <mathias@google.com> | 2012-10-09 16:36:30 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-09 16:36:30 -0700 |
commit | 45778999c705683ec0fcca3e90c7e9969e081d93 (patch) | |
tree | 37b7f1383935f70fdf9ae3f86a70dc74c999b24e /libs | |
parent | 2a09bb321930e1f782599ec902bca1db58b9af77 (diff) | |
parent | b5c9dcdf3bdab1862047060b8e18c9d1831db8bb (diff) | |
download | frameworks_native-45778999c705683ec0fcca3e90c7e9969e081d93.zip frameworks_native-45778999c705683ec0fcca3e90c7e9969e081d93.tar.gz frameworks_native-45778999c705683ec0fcca3e90c7e9969e081d93.tar.bz2 |
Merge "Fence didn't manager sync_wait error codes properly" into jb-mr1-dev
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ui/Fence.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/libs/ui/Fence.cpp b/libs/ui/Fence.cpp index d2dbad2..d214b97 100644 --- a/libs/ui/Fence.cpp +++ b/libs/ui/Fence.cpp @@ -42,26 +42,27 @@ Fence::~Fence() { } } -int Fence::wait(unsigned int timeout) { +status_t Fence::wait(unsigned int timeout) { ATRACE_CALL(); if (mFenceFd == -1) { return NO_ERROR; } - return sync_wait(mFenceFd, timeout); + int err = sync_wait(mFenceFd, timeout); + return err < 0 ? -errno : status_t(NO_ERROR); } -int Fence::waitForever(unsigned int warningTimeout, const char* logname) { +status_t Fence::waitForever(unsigned int warningTimeout, const char* logname) { ATRACE_CALL(); if (mFenceFd == -1) { return NO_ERROR; } int err = sync_wait(mFenceFd, warningTimeout); - if (err == -ETIME) { + if (err < 0 && errno == ETIME) { ALOGE("%s: fence %d didn't signal in %u ms", logname, mFenceFd, warningTimeout); err = sync_wait(mFenceFd, TIMEOUT_NEVER); } - return err; + return err < 0 ? -errno : status_t(NO_ERROR); } sp<Fence> Fence::merge(const String8& name, const sp<Fence>& f1, |