diff options
| author | Mathias Agopian <mathias@google.com> | 2009-07-31 14:47:00 -0700 |
|---|---|---|
| committer | Mathias Agopian <mathias@google.com> | 2009-07-31 14:47:00 -0700 |
| commit | abac01052c1c40f8582fe9f010c2efe6013e25c6 (patch) | |
| tree | 4662643547957b2f93fbb7f8e5c5d38addaaf56e /libs | |
| parent | 1a20bae18ce05a5a141810492549d351a82f6490 (diff) | |
| download | frameworks_base-abac01052c1c40f8582fe9f010c2efe6013e25c6.zip frameworks_base-abac01052c1c40f8582fe9f010c2efe6013e25c6.tar.gz frameworks_base-abac01052c1c40f8582fe9f010c2efe6013e25c6.tar.bz2 | |
be more robust when errors occur upon EGL surface creation (ie: don't crash)
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/ui/Surface.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/libs/ui/Surface.cpp b/libs/ui/Surface.cpp index 04ab64c..a4710aa 100644 --- a/libs/ui/Surface.cpp +++ b/libs/ui/Surface.cpp @@ -558,14 +558,16 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer) volatile const surface_info_t* const back = lcblk->surface + backIdx; if (back->flags & surface_info_t::eNeedNewBuffer) { - getBufferLocked(backIdx); + err = getBufferLocked(backIdx); } - const sp<SurfaceBuffer>& backBuffer(mBuffers[backIdx]); - mDirtyRegion.set(backBuffer->width, backBuffer->height); - *buffer = backBuffer.get(); + if (err == NO_ERROR) { + const sp<SurfaceBuffer>& backBuffer(mBuffers[backIdx]); + mDirtyRegion.set(backBuffer->width, backBuffer->height); + *buffer = backBuffer.get(); + } - return NO_ERROR; + return err; } int Surface::lockBuffer(android_native_buffer_t* buffer) @@ -729,7 +731,7 @@ status_t Surface::getBufferLocked(int index) currentBuffer.clear(); } err = getBufferMapper().registerBuffer(buffer->handle); - LOGW_IF(err, "map(...) failed %d (%s)", err, strerror(-err)); + LOGW_IF(err, "registerBuffer(...) failed %d (%s)", err, strerror(-err)); if (err == NO_ERROR) { currentBuffer = buffer; } |
