summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mark Renouf <mrenouf@google.com> 2022-04-27 16:59:00 -0400
committer Mark Renouf <mrenouf@google.com> 2022-04-27 17:07:24 -0400
commite8f1a8c55939f5d2eb239f6d8aa1f928d7e4797d (patch)
tree7b4c473874d4cb2deaa29d6c17f5c08edcb2825f
parent2b7ad933d75c19dd6bdfcc80112bdbe9f8dbae16 (diff)
Restores a capture rate limit for long screenshots
A previous change accidentally lost this delay between incremental screen captures. This rate limit is needed to prevent pushing screen capture faster than it can render correctly. Bug: 173700533 Bug: 217046739 Test: manual; long screenshot, observe app systrace Change-Id: Ibd7940299b502c40212957395d272b6e52cc28be
-rw-r--r--core/java/com/android/internal/view/ScrollCaptureViewSupport.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/core/java/com/android/internal/view/ScrollCaptureViewSupport.java b/core/java/com/android/internal/view/ScrollCaptureViewSupport.java
index 94a8ae5a8a67..f2c27a494fc9 100644
--- a/core/java/com/android/internal/view/ScrollCaptureViewSupport.java
+++ b/core/java/com/android/internal/view/ScrollCaptureViewSupport.java
@@ -76,6 +76,7 @@ public class ScrollCaptureViewSupport<V extends View> implements ScrollCaptureCa
ContentResolver contentResolver = context.getContentResolver();
mPostScrollDelayMillis = Settings.Global.getLong(contentResolver,
SETTING_CAPTURE_DELAY, SETTING_CAPTURE_DELAY_DEFAULT);
+ Log.d(TAG, "screenshot.scroll_capture_delay = " + mPostScrollDelayMillis);
}
/** Based on ViewRootImpl#updateColorModeIfNeeded */
@@ -271,6 +272,13 @@ public class ScrollCaptureViewSupport<V extends View> implements ScrollCaptureCa
Rect viewCaptureArea = new Rect(scrollResult.availableArea);
viewCaptureArea.offset(0, -scrollResult.scrollDelta);
+ view.postOnAnimationDelayed(
+ () -> doCapture(scrollResult, view, viewCaptureArea, onComplete),
+ mPostScrollDelayMillis);
+ }
+
+ private void doCapture(ScrollResult scrollResult, V view, Rect viewCaptureArea,
+ Consumer<Rect> onComplete) {
int result = mRenderer.renderView(view, viewCaptureArea);
if (result == HardwareRenderer.SYNC_OK
|| result == HardwareRenderer.SYNC_REDRAW_REQUESTED) {