aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphael Moll <raphael@google.com>2024-04-17 11:29:11 -0700
committerCopybara-Service <copybara-worker@google.com>2024-04-17 11:29:59 -0700
commit92fc90561cdb93bee3bc622ec9af11166e5d2660 (patch)
treed37c0f2bea2e00f65e24181efee67073ddf8daea
parente54bde4a2055e3cfcb63b5f4f1e9e6db5d1f8928 (diff)
downloadrobolectric-92fc90561cdb93bee3bc622ec9af11166e5d2660.tar.gz
Add PerfStarts for Screenshots.
Used to track Software vs PixelCopy vs Hardware rendering modes. PiperOrigin-RevId: 625751188
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowPixelCopy.java15
1 files changed, 12 insertions, 3 deletions
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPixelCopy.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPixelCopy.java
index a070ce1cb..9039e885e 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPixelCopy.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPixelCopy.java
@@ -25,6 +25,7 @@ import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowWindowManagerGlobal.WindowManagerGlobalReflector;
+import org.robolectric.util.PerfStatsCollector;
import org.robolectric.util.reflector.Accessor;
import org.robolectric.util.reflector.Constructor;
import org.robolectric.util.reflector.ForType;
@@ -168,10 +169,18 @@ public class ShadowPixelCopy {
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
if (HardwareRenderingScreenshot.canTakeScreenshot()) {
- HardwareRenderingScreenshot.takeScreenshot(view, bitmap);
+ PerfStatsCollector.getInstance()
+ .measure(
+ "ShadowPixelCopy-Hardware",
+ () -> HardwareRenderingScreenshot.takeScreenshot(view, bitmap));
} else {
- Canvas screenshotCanvas = new Canvas(bitmap);
- view.draw(screenshotCanvas);
+ PerfStatsCollector.getInstance()
+ .measure(
+ "ShadowPixelCopy-Software",
+ () -> {
+ Canvas screenshotCanvas = new Canvas(bitmap);
+ view.draw(screenshotCanvas);
+ });
}
Rect dst = new Rect(0, 0, screenshot.getWidth(), screenshot.getHeight());