Release WallpaperService SurfaceControl directly

The SurfaceControl is created with the engine and filled in later after
the first time attachging. It can be released as soon as the engine is detached, since wallpaper engines are never reused after detaching.

Test: atest WallpaperManagerTest # after which, check dumpsys surfaceflinger for leftover offscreen wallpaper layers
Test: adb shell su root kill -10 `adb shell pidof system_server` # and then take a heap dump to ensure the IWindow is also gone.
Bug: 261358202
Change-Id: I86f0a3ee9b8272d61bbc8f9c5f80ee3f0ddac96f
This commit is contained in:
Robin Lee
2023-02-09 14:41:37 +01:00
parent e04f925d9b
commit 9c1d6b4592

View File

@@ -2198,6 +2198,11 @@ public abstract class WallpaperService extends Service {
}
mCreated = false;
}
if (mSurfaceControl != null) {
mSurfaceControl.release();
mSurfaceControl = null;
}
}
private final DisplayListener mDisplayListener = new DisplayListener() {