summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ContentRecorder.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/ContentRecorder.java b/services/core/java/com/android/server/wm/ContentRecorder.java
index 8eccffd8fe3b..a4e58ef923b8 100644
--- a/services/core/java/com/android/server/wm/ContentRecorder.java
+++ b/services/core/java/com/android/server/wm/ContentRecorder.java
@@ -368,6 +368,15 @@ final class ContentRecorder implements WindowContainerListener {
return;
}
+ final SurfaceControl sourceSurface = mRecordedWindowContainer.getSurfaceControl();
+ if (sourceSurface == null || !sourceSurface.isValid()) {
+ ProtoLog.v(WM_DEBUG_CONTENT_RECORDING,
+ "Content Recording: Unable to start recording for display %d since the "
+ + "surface is null or have been released.",
+ mDisplayContent.getDisplayId());
+ return;
+ }
+
final int contentToRecord = mContentRecordingSession.getContentToRecord();
// TODO(b/297514518) Do not start capture if the app is in PIP, the bounds are inaccurate.
@@ -395,8 +404,7 @@ final class ContentRecorder implements WindowContainerListener {
mDisplayContent.getDisplayId(), mDisplayContent.getDisplayInfo().state);
// Create a mirrored hierarchy for the SurfaceControl of the DisplayArea to capture.
- mRecordedSurface = SurfaceControl.mirrorSurface(
- mRecordedWindowContainer.getSurfaceControl());
+ mRecordedSurface = SurfaceControl.mirrorSurface(sourceSurface);
SurfaceControl.Transaction transaction =
mDisplayContent.mWmService.mTransactionFactory.get()
// Set the mMirroredSurface's parent to the root SurfaceControl for this