@@ -12,7 +12,11 @@ actor CaptureService {
1212 private var lastCaptureTimestamp : Date ? // Keeps filenames unique when captures share a real timestamp.
1313 private var showTouchesOverrides : [ String : Task < Bool ? , Never > ] = [ : ]
1414
15- init ( adb: ADBService , fileStore: FileStore , deviceTracker: DeviceTracker ) {
15+ init (
16+ adb: ADBService ,
17+ fileStore: FileStore ,
18+ deviceTracker: DeviceTracker
19+ ) {
1620 self . adb = adb
1721 self . fileStore = fileStore
1822 self . deviceTracker = deviceTracker
@@ -55,14 +59,18 @@ actor CaptureService {
5559 func startRecordings( for devices: [ Device ] ) async -> ( [ String : RecordingSession ] , Error ? ) {
5660 var sessions : [ String : RecordingSession ] = [ : ]
5761 var encounteredError : Error ?
62+ let targetBugReport = await AppSettings . shared. recordAsBugReport
5863
5964 await withTaskGroup ( of: ( String, Result < RecordingSession , Error > ) . self) { group in
65+ let exec = await adb. exec ( )
6066 for device in devices {
6167 group. addTask {
62- let exec = await self . adb . exec ( )
68+ await self . beginShowTouchesOverride ( deviceID : device . id )
6369 do {
64- let session = try await exec. startScreenrecord ( deviceID: device. id)
65- await self . beginShowTouchesOverride ( deviceID: device. id)
70+ let session = try await exec. startScreenrecord (
71+ deviceID: device. id,
72+ bugReport: targetBugReport
73+ )
6674 return ( device. id, . success( session) )
6775 } catch {
6876 await self . scheduleRestoreShowTouches ( deviceID: device. id)
@@ -147,8 +155,9 @@ actor CaptureService {
147155 }
148156
149157 func startLivePreview( for deviceID: String ) async throws -> LivePreviewSession {
158+ beginShowTouchesOverride ( deviceID: deviceID)
159+
150160 do {
151- beginShowTouchesOverride ( deviceID: deviceID)
152161 return try await LivePreviewSession ( deviceID: deviceID, adb: adb)
153162 } catch {
154163 await scheduleRestoreShowTouches ( deviceID: deviceID)
@@ -197,10 +206,10 @@ actor CaptureService {
197206 guard showTouchesOverrides [ deviceID] == nil else { return }
198207
199208 let task = Task < Bool ? , Never > {
209+ let targetValue = await AppSettings . shared. showTouchesDuringCapture
210+ let exec = await adb. exec ( )
200211 do {
201- let exec = await adb. exec ( )
202212 let originalValue = try await exec. getShowTouches ( deviceID: deviceID)
203- let targetValue = await AppSettings . shared. showTouchesDuringCapture
204213 if originalValue != targetValue {
205214 try await exec. setShowTouches ( deviceID: deviceID, enabled: targetValue)
206215 }
@@ -217,10 +226,10 @@ actor CaptureService {
217226 }
218227
219228 private func scheduleRestoreShowTouches( deviceID: String ) async {
220- guard let state = showTouchesOverrides. removeValue ( forKey: deviceID) else { return }
229+ guard let task = showTouchesOverrides. removeValue ( forKey: deviceID) else { return }
221230 let exec = await adb. exec ( )
222231 Task . detached ( priority: . utility) {
223- let originalValue = await state . value
232+ let originalValue = await task . value
224233 guard let originalValue else { return }
225234 do {
226235 try await exec. setShowTouches ( deviceID: deviceID, enabled: originalValue)
0 commit comments