Reduce unnecessary overhead of screenshot bitmap from assist

Since hardware bitmap is introduced, it is already fast enough to
pass across processes. And Bitmap#asShared becomes an unnecessary
operation.

This can save 70%+ execution time of requestAssistScreenshot.
About from 65ms to 15ms.

Bug: 201351584
Test: Measure the time from a test app with looping
      IWindowManager#requestAssistScreenshot(receiver).

Change-Id: Ie5510eae789219e3afbe1a9ecf8911925207c0ba
This commit is contained in:
Riddle Hsu
2022-07-12 13:11:58 +00:00
parent 64956e3217
commit afd99035e9

View File

@@ -4811,16 +4811,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
final Bitmap bitmap = screenshotBuffer == null ? null : screenshotBuffer.asBitmap();
if (bitmap == null) {
Slog.w(TAG_WM, "Failed to take screenshot");
return null;
}
// Create a copy of the screenshot that is immutable and backed in ashmem.
// This greatly reduces the overhead of passing the bitmap between processes.
final Bitmap ret = bitmap.asShared();
if (ret != bitmap) {
bitmap.recycle();
}
return ret;
return bitmap;
}
@Override