summaryrefslogtreecommitdiffstats
path: root/libs/ui
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2009-07-31 14:47:00 -0700
committerMathias Agopian <mathias@google.com>2009-07-31 14:47:00 -0700
commitabac01052c1c40f8582fe9f010c2efe6013e25c6 (patch)
tree4662643547957b2f93fbb7f8e5c5d38addaaf56e /libs/ui
parent1a20bae18ce05a5a141810492549d351a82f6490 (diff)
downloadframeworks_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/ui')
-rw-r--r--libs/ui/Surface.cpp14
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;
}