Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f770ee8 authored by Winson Chung's avatar Winson Chung
Browse files

Fix strictmode error logs due to task snapshot hw buffer not being closed

- Wrapping the buffer into a bitmap will add a reference so we can
  close the buffer once we convert the TaskSnapshot into a
  ThumbnailData
- Also probably shouldn't be creating a new ThumbnailData for each
  local task stack listener (most of whom don't actually handle this
  method)

Fixes: 165825625
Test: Check logs
Change-Id: I4d881721692a960ac40be848e49188afddbbc9c3
parent 146efcb5
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -62,16 +62,15 @@ public class ThumbnailData {
    }

    private static Bitmap makeThumbnail(TaskSnapshot snapshot) {
        final HardwareBuffer buffer = snapshot.getHardwareBuffer();
        Bitmap thumbnail = null;
        try {
        try (final HardwareBuffer buffer = snapshot.getHardwareBuffer()) {
            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, ex);
                    + snapshot.getHardwareBuffer(), ex);
        }
        if (thumbnail == null) {
            Point taskSize = snapshot.getTaskSize();
+3 −2
Original line number Diff line number Diff line
@@ -292,9 +292,10 @@ public class TaskStackChangeListeners {
                    }
                    case ON_TASK_SNAPSHOT_CHANGED: {
                        Trace.beginSection("onTaskSnapshotChanged");
                        final TaskSnapshot snapshot = (TaskSnapshot) msg.obj;
                        final ThumbnailData thumbnail = new ThumbnailData(snapshot);
                        for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) {
                            mTaskStackListeners.get(i).onTaskSnapshotChanged(msg.arg1,
                                    new ThumbnailData((TaskSnapshot) msg.obj));
                            mTaskStackListeners.get(i).onTaskSnapshotChanged(msg.arg1, thumbnail);
                        }
                        Trace.endSection();
                        break;