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

Commit 81e4b570 authored by Vladimir Komsiyski's avatar Vladimir Komsiyski
Browse files

Allow for camera streaming to virtual devices

Fix: 291740640
Test: manual
Change-Id: I19e28e30d97a7b1ffb99236c619068fde87583ee
parent 488eb985
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -43,6 +43,13 @@ flag {
  bug: "270352264"
}

flag {
  name: "stream_camera"
  namespace: "virtual_devices"
  description: "Enable streaming camera to Virtual Devices"
  bug: "291740640"
}

flag {
  name: "stream_permissions"
  namespace: "virtual_devices"
+9 −3
Original line number Diff line number Diff line
@@ -323,7 +323,9 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub
        mSensorController = new SensorController(this, mDeviceId,
                mParams.getVirtualSensorCallback(), mParams.getVirtualSensorConfigs());
        mCameraAccessController = cameraAccessController;
        if (mCameraAccessController != null) {
            mCameraAccessController.startObservingIfNeeded();
        }
        if (!Flags.streamPermissions()) {
            mPermissionDialogComponent = getPermissionDialogComponent();
        } else {
@@ -563,7 +565,9 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub
            }

            mAppToken.unlinkToDeath(this, 0);
            if (mCameraAccessController != null) {
                mCameraAccessController.stopObservingIfNeeded();
            }

            mInputController.close();
            mSensorController.close();
@@ -583,7 +587,9 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub
    @Override
    @RequiresPermission(android.Manifest.permission.CAMERA_INJECT_EXTERNAL_CAMERA)
    public void onRunningAppsChanged(ArraySet<Integer> runningUids) {
        if (mCameraAccessController != null) {
            mCameraAccessController.blockCameraAccessIfNeeded(runningUids);
        }
        mRunningAppsChangedCallback.accept(runningUids);
    }

+3 −0
Original line number Diff line number Diff line
@@ -184,6 +184,9 @@ public class VirtualDeviceManagerService extends SystemService {
    }

    CameraAccessController getCameraAccessController(UserHandle userHandle) {
        if (Flags.streamCamera()) {
            return null;
        }
        int userId = userHandle.getIdentifier();
        synchronized (mVirtualDeviceManagerLock) {
            for (int i = 0; i < mVirtualDevices.size(); i++) {