fix Swift 6 concurrency data races across AppState, UDPManager, SessionView

This commit is contained in:
jess 2026-04-03 08:17:08 -07:00
parent e4db734098
commit 1dca7b035e
3 changed files with 10 additions and 5 deletions

View File

@ -576,8 +576,9 @@ final class AppState {
transport.measuring = true
send(buildSysexStartClean(vMv: v, durationS: d))
status = String(format: "Cleaning: %.0f mV for %.0fs", v, d)
DispatchQueue.main.asyncAfter(deadline: .now() + Double(d) + 2) { [weak self] in
self?.transport.measuring = false
let t = transport
DispatchQueue.main.asyncAfter(deadline: .now() + Double(d) + 2) {
t.measuring = false
}
}

View File

@ -72,8 +72,9 @@ final class UDPManager: @unchecked Sendable {
connection = conn
conn.stateUpdateHandler = { [weak self] newState in
guard let self else { return }
DispatchQueue.main.async {
self?.handleStateChange(newState)
self.handleStateChange(newState)
}
}
@ -184,7 +185,8 @@ final class UDPManager: @unchecked Sendable {
private func startTimers() {
keepaliveTimer = Timer.scheduledTimer(withTimeInterval: Self.keepaliveInterval, repeats: true) { [weak self] _ in
self?.send(buildSysexGetTemp())
guard let self else { return }
self.send(buildSysexGetTemp())
}
timeoutTimer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { [weak self] _ in

View File

@ -28,9 +28,11 @@ struct SessionView: View {
private func startObserving() {
sessionCancellable = Storage.shared.observeSessions { sessions in
Task { @MainActor in
self.sessions = sessions
}
}
}
// MARK: - Wide layout (iPad)