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

Commit f6f0389f authored by Jan Sebechlebsky's avatar Jan Sebechlebsky
Browse files

Cache camera id in VirtualCamera instance and make it immutable.

... otherwise getId returns 0 after camera unregistration which is
bit confusing, since one would expect the id is immutable during whole
lifetime of the VirtualCamera instance.

Bug: 310857519
Test: atest VirtualCameraTest
Change-Id: I432e0a69389af3d59a1a22b469b689581d424fb2
parent 06b5337b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -346,7 +346,8 @@ public class VirtualDeviceInternal {
    VirtualCamera createVirtualCamera(@NonNull VirtualCameraConfig config) {
        try {
            mVirtualDevice.registerVirtualCamera(config);
            return new VirtualCamera(mVirtualDevice, config);
            return new VirtualCamera(mVirtualDevice,
                            Integer.toString(mVirtualDevice.getVirtualCameraId(config)), config);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+7 −8
Original line number Diff line number Diff line
@@ -54,6 +54,8 @@ import java.util.concurrent.Executor;
public final class VirtualCamera implements Closeable {

    private final IVirtualDevice mVirtualDevice;

    private final String mCameraId;
    private final VirtualCameraConfig mConfig;

    /**
@@ -63,10 +65,12 @@ public final class VirtualCamera implements Closeable {
     * @param config Configuration for the new virtual camera
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
    public VirtualCamera(
            @NonNull IVirtualDevice virtualDevice, @NonNull VirtualCameraConfig config) {
            @NonNull IVirtualDevice virtualDevice,
            @NonNull String cameraId,
            @NonNull VirtualCameraConfig config) {
        mVirtualDevice = Objects.requireNonNull(virtualDevice);
        mCameraId = Objects.requireNonNull(cameraId);
        mConfig = Objects.requireNonNull(config);
    }

@@ -80,14 +84,9 @@ public final class VirtualCamera implements Closeable {
     * Returns the id of this virtual camera instance.
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
    @NonNull
    public String getId() {
        try {
            return Integer.toString(mVirtualDevice.getVirtualCameraId(mConfig));
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
        return mCameraId;
    }

    @Override