diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 25f5609d99228..c87808b113f67 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -1960,7 +1960,7 @@ public final class SurfaceControl implements Parcelable { * @hide */ public static ScreenshotGraphicBuffer captureLayersExcluding(SurfaceControl layer, - Rect sourceCrop, float frameScale, SurfaceControl[] exclude) { + Rect sourceCrop, float frameScale, int format, SurfaceControl[] exclude) { final IBinder displayToken = SurfaceControl.getInternalDisplayToken(); long[] nativeExcludeObjects = new long[exclude.length]; for (int i = 0; i < exclude.length; i++) { diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java index f83b0522846cd..0f5cafe9e4e6f 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotController.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java @@ -352,9 +352,19 @@ class TaskSnapshotController { } task.getBounds(mTmpRect); mTmpRect.offsetTo(0, 0); + + SurfaceControl[] excludeLayers; + final WindowState imeWindow = task.getDisplayContent().mInputMethodWindow; + if (imeWindow != null) { + excludeLayers = new SurfaceControl[1]; + excludeLayers[0] = imeWindow.getSurfaceControl(); + } else { + excludeLayers = new SurfaceControl[0]; + } final SurfaceControl.ScreenshotGraphicBuffer screenshotBuffer = - SurfaceControl.captureLayers( - task.getSurfaceControl(), mTmpRect, scaleFraction, pixelFormat); + SurfaceControl.captureLayersExcluding( + task.getSurfaceControl(), mTmpRect, scaleFraction, + pixelFormat, excludeLayers); if (outTaskSize != null) { outTaskSize.x = mTmpRect.width(); outTaskSize.y = mTmpRect.height();