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
|
transport.measuring = true
|
||||||
send(buildSysexStartClean(vMv: v, durationS: d))
|
send(buildSysexStartClean(vMv: v, durationS: d))
|
||||||
status = String(format: "Cleaning: %.0f mV for %.0fs", v, d)
|
status = String(format: "Cleaning: %.0f mV for %.0fs", v, d)
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + Double(d) + 2) { [weak self] in
|
let t = transport
|
||||||
self?.transport.measuring = false
|
DispatchQueue.main.asyncAfter(deadline: .now() + Double(d) + 2) {
|
||||||
|
t.measuring = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -72,8 +72,9 @@ final class UDPManager: @unchecked Sendable {
|
||||||
connection = conn
|
connection = conn
|
||||||
|
|
||||||
conn.stateUpdateHandler = { [weak self] newState in
|
conn.stateUpdateHandler = { [weak self] newState in
|
||||||
|
guard let self else { return }
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
self?.handleStateChange(newState)
|
self.handleStateChange(newState)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -184,7 +185,8 @@ final class UDPManager: @unchecked Sendable {
|
||||||
|
|
||||||
private func startTimers() {
|
private func startTimers() {
|
||||||
keepaliveTimer = Timer.scheduledTimer(withTimeInterval: Self.keepaliveInterval, repeats: true) { [weak self] _ in
|
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
|
timeoutTimer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { [weak self] _ in
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,9 @@ struct SessionView: View {
|
||||||
|
|
||||||
private func startObserving() {
|
private func startObserving() {
|
||||||
sessionCancellable = Storage.shared.observeSessions { sessions in
|
sessionCancellable = Storage.shared.observeSessions { sessions in
|
||||||
self.sessions = sessions
|
Task { @MainActor in
|
||||||
|
self.sessions = sessions
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue