Merge "ImageWriter: remove mCloseLock guard from queue and dequeue operations" into tm-qpr-dev am: 8809b27560
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20842772 Change-Id: Ifa8be1fc14bb67968d041d770b06258f597da44a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -431,7 +431,6 @@ public class ImageWriter implements AutoCloseable {
|
|||||||
* @see Image#close
|
* @see Image#close
|
||||||
*/
|
*/
|
||||||
public Image dequeueInputImage() {
|
public Image dequeueInputImage() {
|
||||||
synchronized (mCloseLock) {
|
|
||||||
if (mDequeuedImages.size() >= mMaxImages) {
|
if (mDequeuedImages.size() >= mMaxImages) {
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"Already dequeued max number of Images " + mMaxImages);
|
"Already dequeued max number of Images " + mMaxImages);
|
||||||
@@ -442,7 +441,6 @@ public class ImageWriter implements AutoCloseable {
|
|||||||
newImage.mIsImageValid = true;
|
newImage.mIsImageValid = true;
|
||||||
return newImage;
|
return newImage;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -500,7 +498,6 @@ public class ImageWriter implements AutoCloseable {
|
|||||||
throw new IllegalArgumentException("image shouldn't be null");
|
throw new IllegalArgumentException("image shouldn't be null");
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized (mCloseLock) {
|
|
||||||
boolean ownedByMe = isImageOwnedByMe(image);
|
boolean ownedByMe = isImageOwnedByMe(image);
|
||||||
if (ownedByMe && !(((WriterSurfaceImage) image).mIsImageValid)) {
|
if (ownedByMe && !(((WriterSurfaceImage) image).mIsImageValid)) {
|
||||||
throw new IllegalStateException("Image from ImageWriter is invalid");
|
throw new IllegalStateException("Image from ImageWriter is invalid");
|
||||||
@@ -547,7 +544,6 @@ public class ImageWriter implements AutoCloseable {
|
|||||||
wi.mIsImageValid = false;
|
wi.mIsImageValid = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the ImageWriter format.
|
* Get the ImageWriter format.
|
||||||
@@ -681,11 +677,11 @@ public class ImageWriter implements AutoCloseable {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
|
setOnImageReleasedListener(null, null);
|
||||||
synchronized (mCloseLock) {
|
synchronized (mCloseLock) {
|
||||||
if (!mIsWriterValid) {
|
if (!mIsWriterValid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setOnImageReleasedListener(null, null);
|
|
||||||
for (Image image : mDequeuedImages) {
|
for (Image image : mDequeuedImages) {
|
||||||
image.close();
|
image.close();
|
||||||
}
|
}
|
||||||
@@ -817,14 +813,12 @@ public class ImageWriter implements AutoCloseable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final Handler handler;
|
final Handler handler;
|
||||||
final boolean isWriterValid;
|
|
||||||
synchronized (iw.mListenerLock) {
|
synchronized (iw.mListenerLock) {
|
||||||
handler = iw.mListenerHandler;
|
handler = iw.mListenerHandler;
|
||||||
}
|
}
|
||||||
synchronized (iw.mCloseLock) {
|
|
||||||
isWriterValid = iw.mIsWriterValid;
|
if (handler != null) {
|
||||||
}
|
// The ListenerHandler will take care of ensuring that the parent ImageWriter is valid
|
||||||
if (handler != null && isWriterValid) {
|
|
||||||
handler.sendEmptyMessage(0);
|
handler.sendEmptyMessage(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user