summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java3
2 files changed, 13 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
index a60c24146d9f..7d5779949074 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
@@ -38,6 +38,7 @@ import android.app.ActivityOptions;
import android.app.ExitTransitionCoordinator;
import android.app.ExitTransitionCoordinator.ExitTransitionCallbacks;
import android.app.Notification;
+import android.app.WindowContext;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ActivityInfo;
@@ -165,7 +166,7 @@ public class ScreenshotController {
// From WizardManagerHelper.java
private static final String SETTINGS_SECURE_USER_SETUP_COMPLETE = "user_setup_complete";
- private final Context mContext;
+ private final WindowContext mContext;
private final ScreenshotNotificationsController mNotificationsController;
private final ScreenshotSmartActions mScreenshotSmartActions;
private final UiEventLogger mUiEventLogger;
@@ -240,7 +241,7 @@ public class ScreenshotController {
final DisplayManager dm = requireNonNull(context.getSystemService(DisplayManager.class));
final Display display = dm.getDisplay(DEFAULT_DISPLAY);
final Context displayContext = context.createDisplayContext(display);
- mContext = displayContext.createWindowContext(TYPE_SCREENSHOT, null);
+ mContext = (WindowContext) displayContext.createWindowContext(TYPE_SCREENSHOT, null);
mWindowManager = mContext.getSystemService(WindowManager.class);
mAccessibilityManager = AccessibilityManager.getInstance(mContext);
@@ -352,6 +353,13 @@ public class ScreenshotController {
}
/**
+ * Release the constructed window context.
+ */
+ void releaseContext() {
+ mContext.release();
+ }
+
+ /**
* Update resources on configuration change. Reinflate for theme/color changes.
*/
private void reloadAssets() {
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
index c2b20d37f3f3..c33bbc51ed5b 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
@@ -123,6 +123,9 @@ public class TakeScreenshotService extends Service {
@Override
public void onDestroy() {
super.onDestroy();
+ if (mScreenshot != null) {
+ mScreenshot.releaseContext();
+ }
if (DEBUG_SERVICE) {
Log.d(TAG, "onDestroy");
}