From be39f7d965d95cf3bd7bfe1fff857a92690f6874 Mon Sep 17 00:00:00 2001 From: Dario Lencina Date: Fri, 20 Mar 2026 00:17:50 -0700 Subject: [PATCH] allow torch mode during video recording --- RemoteCam/CameraViewController.swift | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/RemoteCam/CameraViewController.swift b/RemoteCam/CameraViewController.swift index 2b181bc..bc5da34 100644 --- a/RemoteCam/CameraViewController.swift +++ b/RemoteCam/CameraViewController.swift @@ -1201,20 +1201,30 @@ extension CameraViewController { let audioDevice = AVCaptureDevice.default(for: .audio) let audioDeviceInput = try AVCaptureDeviceInput(device: audioDevice!) + // Save torch mode before reconfiguring session (iOS resets torch on commitConfiguration) + let savedTorchMode = self.videoDeviceInput?.device.torchMode ?? .off + self.captureSession.beginConfiguration() - + if self.captureSession.canAddInput(audioDeviceInput) { self.captureSession.addInput(audioDeviceInput) } else { print("Could not add audio device input to the session") } - + if self.captureSession.canAddOutput(self.audioDataOutput) { self.captureSession.addOutput(self.audioDataOutput) self.audioDataOutput.setSampleBufferDelegate(self, queue: self.audioDataOutputQueue) } - + self.captureSession.commitConfiguration() + + // Restore torch mode after session reconfiguration + if savedTorchMode != .off, let device = self.videoDeviceInput?.device, device.hasTorch { + try? device.lockForConfiguration() + device.torchMode = savedTorchMode + device.unlockForConfiguration() + } // Update audio connection self.audioConnection = self.audioDataOutput.connection(with: .audio)