Fence didn't manager sync_wait error codes properly

error codes are returned in errno, this caused ::waitForwever()
to only wait for 1 second and return improper error code (-1).

needed to help debugging 7316632

Bug: 7316632
Change-Id: Ie144f614a88393393972a3a770c6b4b0581f961a
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 @@
     }
 }
 
-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,