drm_hwcomposer: Set timeouts for fence waits

Instead of waiting forever for fences, set some reasonable timeouts
so we can move on with life if a fence doesn't signal.

BUG=chrome-os-partner:45868
TEST=Tested on smaug with osmos, recovered from fence timeouts

Change-Id: I7f18d684d483d789f228cbad8d5a3e43ac898a43
Signed-off-by: Sean Paul <seanpaul@chromium.org>
diff --git a/drmframebuffer.h b/drmframebuffer.h
index 6f078d9..897589c 100644
--- a/drmframebuffer.h
+++ b/drmframebuffer.h
@@ -58,7 +58,8 @@
         return true;
 
       if (release_fence_fd_ >= 0) {
-        if (sync_wait(release_fence_fd_, -1) != 0) {
+        if (sync_wait(release_fence_fd_, kReleaseWaitTimeoutMs) != 0) {
+          ALOGE("Wait for release fence failed\n");
           return false;
         }
       }
@@ -93,6 +94,10 @@
     return ret;
   }
 
+  // Somewhat arbitrarily chosen, but wanted to stay below 3000ms, which is the
+  // system timeout
+  static const int kReleaseWaitTimeoutMs = 1500;
+
  private:
   sp<GraphicBuffer> buffer_;
   int release_fence_fd_;