Add Fence::waitForever which logs a warning timeout, and use it

Bug: 7217641
Change-Id: If0c1a613ead307c4045a47824174bf40c72bc7d7
diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp
index 18a0c10..afdbf04 100644
--- a/libs/gui/SurfaceTextureClient.cpp
+++ b/libs/gui/SurfaceTextureClient.cpp
@@ -129,15 +129,18 @@
 int SurfaceTextureClient::hook_dequeueBuffer_DEPRECATED(ANativeWindow* window,
         ANativeWindowBuffer** buffer) {
     SurfaceTextureClient* c = getSelf(window);
+    ANativeWindowBuffer* buf;
     int fenceFd = -1;
-    int result = c->dequeueBuffer(buffer, &fenceFd);
+    int result = c->dequeueBuffer(&buf, &fenceFd);
     sp<Fence> fence(new Fence(fenceFd));
-    int waitResult = fence->wait(Fence::TIMEOUT_NEVER);
+    int waitResult = fence->waitForever(1000, "dequeueBuffer_DEPRECATED");
     if (waitResult != OK) {
-        ALOGE("hook_dequeueBuffer_DEPRECATED: Fence::wait returned an "
-                "error: %d", waitResult);
+        ALOGE("dequeueBuffer_DEPRECATED: Fence::wait returned an error: %d",
+                waitResult);
+        c->cancelBuffer(buf, -1);
         return waitResult;
     }
+    *buffer = buf;
     return result;
 }
 
@@ -751,7 +754,7 @@
         sp<GraphicBuffer> backBuffer(GraphicBuffer::getSelf(out));
         sp<Fence> fence(new Fence(fenceFd));
 
-        err = fence->wait(Fence::TIMEOUT_NEVER);
+        err = fence->waitForever(1000, "SurfaceTextureClient::lock");
         if (err != OK) {
             ALOGE("Fence::wait failed (%s)", strerror(-err));
             cancelBuffer(out, fenceFd);