Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47431a3b authored by Naomi Musgrave's avatar Naomi Musgrave Committed by Android (Google) Code Review
Browse files

Merge "[MediaProjection] Store WindowContext in field" into sc-v2-dev

parents 69feb3dc cb50daa7
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -50,6 +50,13 @@ public final class MediaProjection {
    private final Context mContext;
    private final Map<Callback, CallbackRecord> mCallbacks;

    /**
     * Store the WindowContext in a field. If it is a local variable, and it is garbage collected
     * during a MediaProjection session, the WindowContainer listener no longer exists.
     */
    @Nullable
    private Context mWindowContext;

    /** @hide */
    public MediaProjection(Context context, IMediaProjection impl) {
        mCallbacks = new ArrayMap<Callback, CallbackRecord>();
@@ -162,11 +169,11 @@ public final class MediaProjection {
     */
    private VirtualDisplayConfig.Builder buildMirroredVirtualDisplay(@NonNull String name,
            int width, int height, int dpi) {
        Context windowContext = mContext.createWindowContext(mContext.getDisplayNoVerify(),
        mWindowContext = mContext.createWindowContext(mContext.getDisplayNoVerify(),
                TYPE_APPLICATION, null /* options */);
        final VirtualDisplayConfig.Builder builder = new VirtualDisplayConfig.Builder(name, width,
                height, dpi);
        builder.setWindowTokenClientToMirror(windowContext.getWindowContextToken());
        builder.setWindowTokenClientToMirror(mWindowContext.getWindowContextToken());
        return builder;
    }