Don't crash on Surface.unlockAndPost() but log & try again

Bug #6482593

Change-Id: Ib477b58e2b7a6cb19a87d05f2aa0448e04d82f7c
This commit is contained in:
Romain Guy
2012-05-18 15:33:57 -07:00
parent f26c8be01b
commit dddcd22b7e

View File

@@ -2257,7 +2257,7 @@ public final class ViewRootImpl implements ViewParent,
mLayoutRequested = true; // ask wm for a new surface next time.
return false;
} catch (IllegalArgumentException e) {
Log.e(TAG, "IllegalArgumentException locking surface", e);
Log.e(TAG, "Could not lock surface", e);
// Don't assume this is due to out of memory, it could be
// something else, and if it is something else then we could
// kill stuff (or ourself) for no reason.
@@ -2343,7 +2343,14 @@ public final class ViewRootImpl implements ViewParent,
unlockCanvasAndPostStartTime = System.nanoTime();
}
surface.unlockCanvasAndPost(canvas);
try {
surface.unlockCanvasAndPost(canvas);
} catch (IllegalArgumentException e) {
Log.e(TAG, "Could not unlock surface", e);
mLayoutRequested = true; // ask wm for a new surface next time.
//noinspection ReturnInsideFinallyBlock
return false;
}
if (ViewDebug.DEBUG_LATENCY) {
long now = System.nanoTime();