summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2012-10-09 16:36:30 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-10-09 16:36:30 -0700
commit45778999c705683ec0fcca3e90c7e9969e081d93 (patch)
tree37b7f1383935f70fdf9ae3f86a70dc74c999b24e /libs
parent2a09bb321930e1f782599ec902bca1db58b9af77 (diff)
parentb5c9dcdf3bdab1862047060b8e18c9d1831db8bb (diff)
downloadframeworks_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.cpp11
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,