diff options
author | Mathias Agopian <mathias@google.com> | 2009-08-21 15:44:17 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2009-08-21 15:44:17 -0700 |
commit | 9e2be20cc5a8f0f7cf384412b5ef519aa7263759 (patch) | |
tree | 33924907b869afceda6f79e6680417e79f59a052 /libs/ui/Surface.cpp | |
parent | dd03c6135f91df6d5d9e71de1487520dc3345742 (diff) | |
download | frameworks_base-9e2be20cc5a8f0f7cf384412b5ef519aa7263759.zip frameworks_base-9e2be20cc5a8f0f7cf384412b5ef519aa7263759.tar.gz frameworks_base-9e2be20cc5a8f0f7cf384412b5ef519aa7263759.tar.bz2 |
fix [2070341] [FAST BLOCKER] can't successfully setup erc52
Diffstat (limited to 'libs/ui/Surface.cpp')
-rw-r--r-- | libs/ui/Surface.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libs/ui/Surface.cpp b/libs/ui/Surface.cpp index 36a10cf..474308a 100644 --- a/libs/ui/Surface.cpp +++ b/libs/ui/Surface.cpp @@ -602,7 +602,18 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer) mBackbufferIndex = backIdx; layer_cblk_t* const lcblk = &(cblk->layers[index]); volatile const surface_info_t* const back = lcblk->surface + backIdx; - if ((back->flags & surface_info_t::eNeedNewBuffer) || mUsageChanged) { + + const sp<SurfaceBuffer>& backBuffer(mBuffers[backIdx]); + + if (backBuffer==0 && + !((back->flags & surface_info_t::eNeedNewBuffer) || mUsageChanged)) { + LOGW("dequeueBuffer: backbuffer is null, but eNeedNewBuffer " + "is not set, fetching a buffer anyways..."); + } + + if ((back->flags & surface_info_t::eNeedNewBuffer) ||mUsageChanged || + backBuffer==0) + { mUsageChanged = false; err = getBufferLocked(backIdx, mUsage); if (err == NO_ERROR) { @@ -614,7 +625,6 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer) } if (err == NO_ERROR) { - const sp<SurfaceBuffer>& backBuffer(mBuffers[backIdx]); if (backBuffer != 0) { mDirtyRegion.set(backBuffer->width, backBuffer->height); *buffer = backBuffer.get(); |