Loading core/java/com/android/internal/view/ScrollCaptureViewSupport.java +27 −29 Original line number Diff line number Diff line Loading @@ -21,10 +21,12 @@ import android.content.ContentResolver; import android.content.Context; import android.content.pm.ActivityInfo; import android.graphics.HardwareRenderer; import android.graphics.HardwareRenderer.SyncAndDrawResult; import android.graphics.RecordingCanvas; import android.graphics.Rect; import android.graphics.RenderNode; import android.os.CancellationSignal; import android.os.SystemClock; import android.provider.Settings; import android.util.DisplayMetrics; import android.util.Log; Loading Loading @@ -52,7 +54,7 @@ import java.util.function.Consumer; @UiThread public class ScrollCaptureViewSupport<V extends View> implements ScrollCaptureCallback { private static final String TAG = "ScrollCaptureViewSupport"; private static final String TAG = "SCViewSupport"; private static final String SETTING_CAPTURE_DELAY = "screenshot.scroll_capture_delay"; private static final long SETTING_CAPTURE_DELAY_DEFAULT = 60L; // millis Loading Loading @@ -264,8 +266,25 @@ public class ScrollCaptureViewSupport<V extends View> implements ScrollCaptureCa if (signal.isCanceled()) { Log.w(TAG, "onScrollCaptureImageRequest: cancelled! skipping render."); } else { mRenderer.renderView(view, viewCaptureArea); int result = mRenderer.renderView(view, viewCaptureArea); switch (result) { case HardwareRenderer.SYNC_OK: case HardwareRenderer.SYNC_REDRAW_REQUESTED: /* Frame synced, buffer will be produced... notify client. */ onComplete.accept(new Rect(scrollResult.availableArea)); return; case HardwareRenderer.SYNC_FRAME_DROPPED: Log.e(TAG, "syncAndDraw(): SYNC_FRAME_DROPPED !"); break; case HardwareRenderer.SYNC_LOST_SURFACE_REWARD_IF_FOUND: Log.e(TAG, "syncAndDraw(): SYNC_LOST_SURFACE !"); break; case HardwareRenderer.SYNC_CONTEXT_IS_STOPPED: Log.e(TAG, "syncAndDraw(): SYNC_CONTEXT_IS_STOPPED !"); break; } // No buffer will be produced. onComplete.accept(new Rect(/* empty */)); } }; Loading Loading @@ -373,37 +392,16 @@ public class ScrollCaptureViewSupport<V extends View> implements ScrollCaptureCa mCaptureRenderNode.endRecording(); } public void renderView(View view, Rect sourceRect) { @SyncAndDrawResult public int renderView(View view, Rect sourceRect) { HardwareRenderer.FrameRenderRequest request = mRenderer.createRenderRequest(); request.setVsyncTime(SystemClock.elapsedRealtimeNanos()); if (updateForView(view)) { setupLighting(view); } view.invalidate(); updateRootNode(view, sourceRect); HardwareRenderer.FrameRenderRequest request = mRenderer.createRenderRequest(); long timestamp = System.nanoTime(); request.setVsyncTime(timestamp); // Would be nice to access nextFrameNumber from HwR without having to hold on to Surface final long frameNumber = mSurface.getNextFrameNumber(); // Block until a frame is presented to the Surface request.setWaitForPresent(true); switch (request.syncAndDraw()) { case HardwareRenderer.SYNC_OK: case HardwareRenderer.SYNC_REDRAW_REQUESTED: return; case HardwareRenderer.SYNC_FRAME_DROPPED: Log.e(TAG, "syncAndDraw(): SYNC_FRAME_DROPPED !"); break; case HardwareRenderer.SYNC_LOST_SURFACE_REWARD_IF_FOUND: Log.e(TAG, "syncAndDraw(): SYNC_LOST_SURFACE !"); break; case HardwareRenderer.SYNC_CONTEXT_IS_STOPPED: Log.e(TAG, "syncAndDraw(): SYNC_CONTEXT_IS_STOPPED !"); break; } return request.syncAndDraw(); } public void trimMemory() { Loading Loading
core/java/com/android/internal/view/ScrollCaptureViewSupport.java +27 −29 Original line number Diff line number Diff line Loading @@ -21,10 +21,12 @@ import android.content.ContentResolver; import android.content.Context; import android.content.pm.ActivityInfo; import android.graphics.HardwareRenderer; import android.graphics.HardwareRenderer.SyncAndDrawResult; import android.graphics.RecordingCanvas; import android.graphics.Rect; import android.graphics.RenderNode; import android.os.CancellationSignal; import android.os.SystemClock; import android.provider.Settings; import android.util.DisplayMetrics; import android.util.Log; Loading Loading @@ -52,7 +54,7 @@ import java.util.function.Consumer; @UiThread public class ScrollCaptureViewSupport<V extends View> implements ScrollCaptureCallback { private static final String TAG = "ScrollCaptureViewSupport"; private static final String TAG = "SCViewSupport"; private static final String SETTING_CAPTURE_DELAY = "screenshot.scroll_capture_delay"; private static final long SETTING_CAPTURE_DELAY_DEFAULT = 60L; // millis Loading Loading @@ -264,8 +266,25 @@ public class ScrollCaptureViewSupport<V extends View> implements ScrollCaptureCa if (signal.isCanceled()) { Log.w(TAG, "onScrollCaptureImageRequest: cancelled! skipping render."); } else { mRenderer.renderView(view, viewCaptureArea); int result = mRenderer.renderView(view, viewCaptureArea); switch (result) { case HardwareRenderer.SYNC_OK: case HardwareRenderer.SYNC_REDRAW_REQUESTED: /* Frame synced, buffer will be produced... notify client. */ onComplete.accept(new Rect(scrollResult.availableArea)); return; case HardwareRenderer.SYNC_FRAME_DROPPED: Log.e(TAG, "syncAndDraw(): SYNC_FRAME_DROPPED !"); break; case HardwareRenderer.SYNC_LOST_SURFACE_REWARD_IF_FOUND: Log.e(TAG, "syncAndDraw(): SYNC_LOST_SURFACE !"); break; case HardwareRenderer.SYNC_CONTEXT_IS_STOPPED: Log.e(TAG, "syncAndDraw(): SYNC_CONTEXT_IS_STOPPED !"); break; } // No buffer will be produced. onComplete.accept(new Rect(/* empty */)); } }; Loading Loading @@ -373,37 +392,16 @@ public class ScrollCaptureViewSupport<V extends View> implements ScrollCaptureCa mCaptureRenderNode.endRecording(); } public void renderView(View view, Rect sourceRect) { @SyncAndDrawResult public int renderView(View view, Rect sourceRect) { HardwareRenderer.FrameRenderRequest request = mRenderer.createRenderRequest(); request.setVsyncTime(SystemClock.elapsedRealtimeNanos()); if (updateForView(view)) { setupLighting(view); } view.invalidate(); updateRootNode(view, sourceRect); HardwareRenderer.FrameRenderRequest request = mRenderer.createRenderRequest(); long timestamp = System.nanoTime(); request.setVsyncTime(timestamp); // Would be nice to access nextFrameNumber from HwR without having to hold on to Surface final long frameNumber = mSurface.getNextFrameNumber(); // Block until a frame is presented to the Surface request.setWaitForPresent(true); switch (request.syncAndDraw()) { case HardwareRenderer.SYNC_OK: case HardwareRenderer.SYNC_REDRAW_REQUESTED: return; case HardwareRenderer.SYNC_FRAME_DROPPED: Log.e(TAG, "syncAndDraw(): SYNC_FRAME_DROPPED !"); break; case HardwareRenderer.SYNC_LOST_SURFACE_REWARD_IF_FOUND: Log.e(TAG, "syncAndDraw(): SYNC_LOST_SURFACE !"); break; case HardwareRenderer.SYNC_CONTEXT_IS_STOPPED: Log.e(TAG, "syncAndDraw(): SYNC_CONTEXT_IS_STOPPED !"); break; } return request.syncAndDraw(); } public void trimMemory() { Loading