fix Swift 6 concurrency data races across AppState, UDPManager, SessionView
This commit is contained in:
parent
e4db734098
commit
1dca7b035e
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -28,7 +28,9 @@ struct SessionView: View {
|
|||
|
||||
private func startObserving() {
|
||||
sessionCancellable = Storage.shared.observeSessions { sessions in
|
||||
self.sessions = sessions
|
||||
Task { @MainActor in
|
||||
self.sessions = sessions
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue