Catch IAE on wrapHardwareBuffer

Bug: 157562905
Test: speculative
Change-Id: Ia07e6f64e4426855fd09e3eda9c58c214bbf0b4e
This commit is contained in:
John Reck
2020-10-20 18:32:23 -04:00
parent 56d8e713e9
commit bee5abf146

View File

@@ -61,18 +61,28 @@ public class ThumbnailData {
snapshotId = 0;
}
public ThumbnailData(TaskSnapshot snapshot) {
private static Bitmap makeThumbnail(TaskSnapshot snapshot) {
final HardwareBuffer buffer = snapshot.getHardwareBuffer();
if (buffer == null || (buffer.getUsage() & HardwareBuffer.USAGE_GPU_SAMPLED_IMAGE) == 0) {
Bitmap thumbnail = null;
try {
if (buffer != null) {
thumbnail = Bitmap.wrapHardwareBuffer(buffer, snapshot.getColorSpace());
}
} catch (IllegalArgumentException ex) {
// TODO(b/157562905): Workaround for a crash when we get a snapshot without this state
Log.e("ThumbnailData", "Unexpected snapshot without USAGE_GPU_SAMPLED_IMAGE: "
+ buffer);
+ buffer, ex);
}
if (thumbnail == null) {
Point taskSize = snapshot.getTaskSize();
thumbnail = Bitmap.createBitmap(taskSize.x, taskSize.y, ARGB_8888);
thumbnail.eraseColor(Color.BLACK);
} else {
thumbnail = Bitmap.wrapHardwareBuffer(buffer, snapshot.getColorSpace());
}
return thumbnail;
}
public ThumbnailData(TaskSnapshot snapshot) {
thumbnail = makeThumbnail(snapshot);
insets = new Rect(snapshot.getContentInsets());
orientation = snapshot.getOrientation();
rotation = snapshot.getRotation();