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

Commit 0cb7161d authored by Yuanjia Hsu's avatar Yuanjia Hsu Committed by Android (Google) Code Review
Browse files

Merge "Remove reference when VirtualAudioDevice is closed"

parents 42d876b1 a8b3b3d4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -445,8 +445,8 @@ public final class VirtualDeviceManager {
                @Nullable Executor executor,
                @Nullable AudioConfigurationChangeCallback callback) {
            if (mVirtualAudioDevice == null) {
                mVirtualAudioDevice = new VirtualAudioDevice(
                        mContext, mVirtualDevice, display, executor, callback);
                mVirtualAudioDevice = new VirtualAudioDevice(mContext, mVirtualDevice, display,
                        executor, callback, () -> mVirtualAudioDevice = null);
            }
            return mVirtualAudioDevice;
        }
+19 −1
Original line number Diff line number Diff line
@@ -64,11 +64,24 @@ public final class VirtualAudioDevice implements Closeable {
        void onRecordingConfigChanged(@NonNull List<AudioRecordingConfiguration> configs);
    }

    /**
     * Interface to be notified when {@link #close()} is called.
     *
     * @hide
     */
    public interface CloseListener {
        /**
         * Notifies when {@link #close()} is called.
         */
        void onClosed();
    }

    private final Context mContext;
    private final IVirtualDevice mVirtualDevice;
    private final VirtualDisplay mVirtualDisplay;
    private final AudioConfigurationChangeCallback mCallback;
    private final Executor mExecutor;
    private final CloseListener mListener;
    @Nullable
    private VirtualAudioSession mOngoingSession;

@@ -77,12 +90,13 @@ public final class VirtualAudioDevice implements Closeable {
     */
    public VirtualAudioDevice(Context context, IVirtualDevice virtualDevice,
            @NonNull VirtualDisplay virtualDisplay, @Nullable Executor executor,
            @Nullable AudioConfigurationChangeCallback callback) {
            @Nullable AudioConfigurationChangeCallback callback, @Nullable CloseListener listener) {
        mContext = context;
        mVirtualDevice = virtualDevice;
        mVirtualDisplay = virtualDisplay;
        mExecutor = executor;
        mCallback = callback;
        mListener = listener;
    }

    /**
@@ -169,6 +183,10 @@ public final class VirtualAudioDevice implements Closeable {
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }

            if (mListener != null) {
                mListener.onClosed();
            }
        }
    }
}