diff options
| -rw-r--r-- | core/java/android/view/Surface.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java index 78986d946161..3770b8a31922 100644 --- a/core/java/android/view/Surface.java +++ b/core/java/android/view/Surface.java @@ -250,7 +250,7 @@ public class Surface implements Parcelable { // double-lock, but that won't happen if mNativeObject was updated. We can't // abandon the old mLockedObject because it might still be in use, so instead // we just refuse to re-lock the Surface. - throw new IllegalStateException("Surface was already locked"); + throw new IllegalArgumentException("Surface was already locked"); } mLockedObject = nativeLockCanvas(mNativeObject, mCanvas, inOutDirty); return mCanvas; @@ -279,9 +279,12 @@ public class Surface implements Parcelable { if (mLockedObject == 0) { throw new IllegalStateException("Surface was not locked"); } - nativeUnlockCanvasAndPost(mLockedObject, canvas); - nativeRelease(mLockedObject); - mLockedObject = 0; + try { + nativeUnlockCanvasAndPost(mLockedObject, canvas); + } finally { + nativeRelease(mLockedObject); + mLockedObject = 0; + } } } |