Loading include/ui/Fence.h +7 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,13 @@ public: // indefinitely for the fence to signal. int wait(unsigned int timeout); // 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 // the caller and will be included in the log message. int waitForever(unsigned int warningTimeout, const char* logname); // TIMEOUT_NEVER may be passed to the wait method to indicate that it // should wait indefinitely for the fence to signal. enum { TIMEOUT_NEVER = -1 }; Loading libs/gui/BufferItemConsumer.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -63,7 +63,7 @@ status_t BufferItemConsumer::acquireBuffer(BufferItem *item, bool waitForFence) } if (waitForFence && item->mFence.get()) { err = item->mFence->wait(Fence::TIMEOUT_NEVER); err = item->mFence->waitForever(1000, "BufferItemConsumer::acquireBuffer"); if (err != OK) { BI_LOGE("Failed to wait for fence of acquired buffer: %s (%d)", strerror(-err), err); Loading libs/gui/CpuConsumer.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ status_t CpuConsumer::lockNextBuffer(LockedBuffer *nativeBuffer) { int buf = b.mBuf; if (b.mFence.get()) { err = b.mFence->wait(Fence::TIMEOUT_NEVER); err = b.mFence->waitForever(1000, "CpuConsumer::lockNextBuffer"); if (err != OK) { CC_LOGE("Failed to wait for fence of acquired buffer: %s (%d)", strerror(-err), err); Loading libs/gui/SurfaceTexture.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -812,7 +812,8 @@ status_t SurfaceTexture::doGLFenceWaitLocked() const { return UNKNOWN_ERROR; } } else { status_t err = mCurrentFence->wait(Fence::TIMEOUT_NEVER); status_t err = mCurrentFence->waitForever(1000, "SurfaceTexture::doGLFenceWaitLocked"); if (err != NO_ERROR) { ST_LOGE("doGLFenceWait: error waiting for fence: %d", err); return err; Loading libs/gui/SurfaceTextureClient.cpp +8 −5 Original line number Diff line number Diff line Loading @@ -129,15 +129,18 @@ int SurfaceTextureClient::hook_queueBuffer(ANativeWindow* window, 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; } Loading Loading @@ -751,7 +754,7 @@ status_t SurfaceTextureClient::lock( 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); Loading Loading
include/ui/Fence.h +7 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,13 @@ public: // indefinitely for the fence to signal. int wait(unsigned int timeout); // 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 // the caller and will be included in the log message. int waitForever(unsigned int warningTimeout, const char* logname); // TIMEOUT_NEVER may be passed to the wait method to indicate that it // should wait indefinitely for the fence to signal. enum { TIMEOUT_NEVER = -1 }; Loading
libs/gui/BufferItemConsumer.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -63,7 +63,7 @@ status_t BufferItemConsumer::acquireBuffer(BufferItem *item, bool waitForFence) } if (waitForFence && item->mFence.get()) { err = item->mFence->wait(Fence::TIMEOUT_NEVER); err = item->mFence->waitForever(1000, "BufferItemConsumer::acquireBuffer"); if (err != OK) { BI_LOGE("Failed to wait for fence of acquired buffer: %s (%d)", strerror(-err), err); Loading
libs/gui/CpuConsumer.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ status_t CpuConsumer::lockNextBuffer(LockedBuffer *nativeBuffer) { int buf = b.mBuf; if (b.mFence.get()) { err = b.mFence->wait(Fence::TIMEOUT_NEVER); err = b.mFence->waitForever(1000, "CpuConsumer::lockNextBuffer"); if (err != OK) { CC_LOGE("Failed to wait for fence of acquired buffer: %s (%d)", strerror(-err), err); Loading
libs/gui/SurfaceTexture.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -812,7 +812,8 @@ status_t SurfaceTexture::doGLFenceWaitLocked() const { return UNKNOWN_ERROR; } } else { status_t err = mCurrentFence->wait(Fence::TIMEOUT_NEVER); status_t err = mCurrentFence->waitForever(1000, "SurfaceTexture::doGLFenceWaitLocked"); if (err != NO_ERROR) { ST_LOGE("doGLFenceWait: error waiting for fence: %d", err); return err; Loading
libs/gui/SurfaceTextureClient.cpp +8 −5 Original line number Diff line number Diff line Loading @@ -129,15 +129,18 @@ int SurfaceTextureClient::hook_queueBuffer(ANativeWindow* window, 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; } Loading Loading @@ -751,7 +754,7 @@ status_t SurfaceTextureClient::lock( 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); Loading