File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -122,6 +122,14 @@ final class WebcamPreviewWindow {
122122 panel? . orderFrontRegardless ( )
123123 }
124124
125+ func hide( ) {
126+ panel? . orderOut ( nil )
127+ }
128+
129+ func unhide( ) {
130+ panel? . orderFrontRegardless ( )
131+ }
132+
125133 func close( ) {
126134 savePosition ( )
127135 if let observer = moveObserver {
Original file line number Diff line number Diff line change @@ -70,6 +70,11 @@ final class ConfigService {
7070 set { data. dimOuterArea = newValue; save ( ) }
7171 }
7272
73+ var hideCameraPreviewWhileRecording : Bool {
74+ get { data. hideCameraPreviewWhileRecording }
75+ set { data. hideCameraPreviewWhileRecording = newValue; save ( ) }
76+ }
77+
7378 var isMicrophoneOn : Bool {
7479 get { data. isMicrophoneOn }
7580 set { data. isMicrophoneOn = newValue; save ( ) }
@@ -162,6 +167,7 @@ private struct ConfigData: Codable {
162167 var projectFolder : String = " ~/Reframed "
163168 var retinaCapture : Bool = false
164169 var dimOuterArea : Bool = true
170+ var hideCameraPreviewWhileRecording : Bool = false
165171 var isMicrophoneOn : Bool = false
166172 var appearance : String = " system "
167173 var shortcuts : [ String : KeyboardShortcut ] = [ : ]
Original file line number Diff line number Diff line change @@ -80,6 +80,10 @@ final class RecordingOptions {
8080 didSet { ConfigService . shared. dimOuterArea = dimOuterArea }
8181 }
8282
83+ var hideCameraPreviewWhileRecording : Bool {
84+ didSet { ConfigService . shared. hideCameraPreviewWhileRecording = hideCameraPreviewWhileRecording }
85+ }
86+
8387 var selectedCamera : CaptureDevice ? {
8488 didSet { ConfigService . shared. cameraDeviceId = selectedCamera? . id }
8589 }
@@ -113,6 +117,7 @@ final class RecordingOptions {
113117 captureSystemAudio = config. captureSystemAudio
114118 retinaCapture = config. retinaCapture
115119 dimOuterArea = config. dimOuterArea
120+ hideCameraPreviewWhileRecording = config. hideCameraPreviewWhileRecording
116121
117122 let savedDeviceId = config. audioDeviceId
118123 if let deviceId = savedDeviceId {
Original file line number Diff line number Diff line change @@ -393,6 +393,9 @@ final class SessionState {
393393 if let camSession = box? . session {
394394 let previewWindow = WebcamPreviewWindow ( )
395395 previewWindow. show ( captureSession: camSession)
396+ if options. hideCameraPreviewWhileRecording {
397+ previewWindow. hide ( )
398+ }
396399 self . webcamPreviewWindow = previewWindow
397400 }
398401 }
@@ -441,6 +444,9 @@ final class SessionState {
441444 if let camSession = box? . session {
442445 let previewWindow = WebcamPreviewWindow ( )
443446 previewWindow. show ( captureSession: camSession)
447+ if options. hideCameraPreviewWhileRecording {
448+ previewWindow. hide ( )
449+ }
444450 self . webcamPreviewWindow = previewWindow
445451 }
446452 }
@@ -646,10 +652,16 @@ final class SessionState {
646652 if windowPositionObserver == nil , case . window( let win) = captureTarget {
647653 startWindowTracking ( windowID: win. windowID)
648654 }
655+ if options. hideCameraPreviewWhileRecording {
656+ webcamPreviewWindow? . hide ( )
657+ }
649658 showToolbar ( )
650659 case . paused:
651- break
660+ if options. hideCameraPreviewWhileRecording {
661+ webcamPreviewWindow? . unhide ( )
662+ }
652663 default :
664+ webcamPreviewWindow? . unhide ( )
653665 stopAudioLevelPolling ( )
654666 stopWindowTracking ( )
655667 }
Original file line number Diff line number Diff line change @@ -93,6 +93,14 @@ extension SettingsView {
9393 set: { options? . dimOuterArea = $0 }
9494 )
9595 )
96+
97+ settingsToggle (
98+ " Hide Camera Preview While Recording " ,
99+ isOn: Binding (
100+ get: { options? . hideCameraPreviewWhileRecording ?? false } ,
101+ set: { options? . hideCameraPreviewWhileRecording = $0 }
102+ )
103+ )
96104 }
97105 }
98106}
You can’t perform that action at this time.
0 commit comments