OSDN Git Service

make the warning timout of Fence::waitForever() implicit and longer
authorMathias Agopian <mathias@google.com>
Fri, 17 May 2013 01:03:22 +0000 (18:03 -0700)
committerMathias Agopian <mathias@google.com>
Fri, 17 May 2013 01:15:57 +0000 (18:15 -0700)
- timeout is now 3 seconds instead of 1
- simplifies the API a bit
- allows us to change/tweak this timeout globaly

Bug: 8988871

Change-Id: I8d3c6ec43a372f602fb3f29856710339f86c0ec9

include/ui/Fence.h
libs/gui/BufferItemConsumer.cpp
libs/gui/CpuConsumer.cpp
libs/gui/GLConsumer.cpp
libs/gui/Surface.cpp
libs/ui/Fence.cpp
services/surfaceflinger/DisplayHardware/HWComposer.cpp

index 81d5d09..60156e7 100644 (file)
@@ -70,9 +70,10 @@ public:
     // waitForever is a convenience function for waiting forever for a fence to
     // signal (just like wait(TIMEOUT_NEVER)), but issuing an error to the
     // system log and fence state to the kernel log if the wait lasts longer
-    // than warningTimeout. The logname argument should be a string identifying
+    // than a warning timeout.
+    // The logname argument should be a string identifying
     // the caller and will be included in the log message.
-    status_t waitForever(unsigned int warningTimeout, const char* logname);
+    status_t waitForever(const char* logname);
 
     // merge combines two Fence objects, creating a new Fence object that
     // becomes signaled when both f1 and f2 are signaled (even if f1 or f2 is
index 90619ab..7db1b84 100644 (file)
@@ -63,7 +63,7 @@ status_t BufferItemConsumer::acquireBuffer(BufferItem *item, bool waitForFence)
     }
 
     if (waitForFence) {
-        err = item->mFence->waitForever(1000, "BufferItemConsumer::acquireBuffer");
+        err = item->mFence->waitForever("BufferItemConsumer::acquireBuffer");
         if (err != OK) {
             BI_LOGE("Failed to wait for fence of acquired buffer: %s (%d)",
                     strerror(-err), err);
index 91af78d..0543649 100644 (file)
@@ -80,7 +80,7 @@ status_t CpuConsumer::lockNextBuffer(LockedBuffer *nativeBuffer) {
     int buf = b.mBuf;
 
     if (b.mFence.get()) {
-        err = b.mFence->waitForever(1000, "CpuConsumer::lockNextBuffer");
+        err = b.mFence->waitForever("CpuConsumer::lockNextBuffer");
         if (err != OK) {
             CC_LOGE("Failed to wait for fence of acquired buffer: %s (%d)",
                     strerror(-err), err);
index 637a403..bec0f90 100644 (file)
@@ -821,7 +821,7 @@ status_t GLConsumer::doGLFenceWaitLocked() const {
                 return UNKNOWN_ERROR;
             }
         } else {
-            status_t err = mCurrentFence->waitForever(1000,
+            status_t err = mCurrentFence->waitForever(
                     "GLConsumer::doGLFenceWaitLocked");
             if (err != NO_ERROR) {
                 ST_LOGE("doGLFenceWait: error waiting for fence: %d", err);
index 4a58023..a616c1e 100644 (file)
@@ -113,7 +113,7 @@ int Surface::hook_dequeueBuffer_DEPRECATED(ANativeWindow* window,
     int fenceFd = -1;
     int result = c->dequeueBuffer(&buf, &fenceFd);
     sp<Fence> fence(new Fence(fenceFd));
-    int waitResult = fence->waitForever(1000, "dequeueBuffer_DEPRECATED");
+    int waitResult = fence->waitForever("dequeueBuffer_DEPRECATED");
     if (waitResult != OK) {
         ALOGE("dequeueBuffer_DEPRECATED: Fence::wait returned an error: %d",
                 waitResult);
@@ -734,7 +734,7 @@ status_t Surface::lock(
         sp<GraphicBuffer> backBuffer(GraphicBuffer::getSelf(out));
         sp<Fence> fence(new Fence(fenceFd));
 
-        err = fence->waitForever(1000, "Surface::lock");
+        err = fence->waitForever("Surface::lock");
         if (err != OK) {
             ALOGE("Fence::wait failed (%s)", strerror(-err));
             cancelBuffer(out, fenceFd);
index b9e0f00..464ee86 100644 (file)
@@ -54,11 +54,12 @@ status_t Fence::wait(unsigned int timeout) {
     return err < 0 ? -errno : status_t(NO_ERROR);
 }
 
-status_t Fence::waitForever(unsigned int warningTimeout, const char* logname) {
+status_t Fence::waitForever(const char* logname) {
     ATRACE_CALL();
     if (mFenceFd == -1) {
         return NO_ERROR;
     }
+    unsigned int warningTimeout = 3000;
     int err = sync_wait(mFenceFd, warningTimeout);
     if (err < 0 && errno == ETIME) {
         ALOGE("%s: fence %d didn't signal in %u ms", logname, mFenceFd,
index f0f7463..a9afbe5 100644 (file)
@@ -750,7 +750,7 @@ int HWComposer::fbPost(int32_t id,
     if (mHwc && hwcHasApiVersion(mHwc, HWC_DEVICE_API_VERSION_1_1)) {
         return setFramebufferTarget(id, acquireFence, buffer);
     } else {
-        acquireFence->waitForever(1000, "HWComposer::fbPost");
+        acquireFence->waitForever("HWComposer::fbPost");
         return mFbDev->post(mFbDev, buffer->handle);
     }
 }