am 8d3cf106: am d4b38fe5: am 647e0df0: Merge "Surface: Leave object in unlocked state when unlockCanvasAndPost fails" into lmp-dev

* commit '8d3cf106aa53ccf03c9f57c4e3b4af5799e2b530':
  Surface: Leave object in unlocked state when unlockCanvasAndPost fails
This commit is contained in:
Jesse Hall
2014-10-13 22:35:45 +00:00
committed by Android Git Automerger

View File

@@ -250,7 +250,7 @@ public class Surface implements Parcelable {
// double-lock, but that won't happen if mNativeObject was updated. We can't // 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 // abandon the old mLockedObject because it might still be in use, so instead
// we just refuse to re-lock the Surface. // 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); mLockedObject = nativeLockCanvas(mNativeObject, mCanvas, inOutDirty);
return mCanvas; return mCanvas;
@@ -279,9 +279,12 @@ public class Surface implements Parcelable {
if (mLockedObject == 0) { if (mLockedObject == 0) {
throw new IllegalStateException("Surface was not locked"); throw new IllegalStateException("Surface was not locked");
} }
nativeUnlockCanvasAndPost(mLockedObject, canvas); try {
nativeRelease(mLockedObject); nativeUnlockCanvasAndPost(mLockedObject, canvas);
mLockedObject = 0; } finally {
nativeRelease(mLockedObject);
mLockedObject = 0;
}
} }
} }