fix(apple): disarm CHHapticEngine handlers with no-ops, not nil
stoppedHandler/resetHandler are non-optional closures on the CI SDK ((StoppedReason)->() and ()->()), so assigning nil fails to compile (apple.yml). Assign no-op closures to disarm them before engine.stop() -- same re-entrancy guard intent, type-correct. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -186,9 +186,10 @@ private final class RumbleRenderer: @unchecked Sendable {
|
|||||||
|
|
||||||
private func teardown() {
|
private func teardown() {
|
||||||
for m in [low, high].compactMap({ $0 }) {
|
for m in [low, high].compactMap({ $0 }) {
|
||||||
// Drop the handlers before stopping so stop() can't re-enter teardown via stoppedHandler.
|
// Disarm the handlers before stopping so stop() can't re-enter teardown via them.
|
||||||
m.engine.stoppedHandler = nil
|
// (Both properties are non-optional closures on this SDK, so assign no-ops, not nil.)
|
||||||
m.engine.resetHandler = nil
|
m.engine.stoppedHandler = { _ in }
|
||||||
|
m.engine.resetHandler = {}
|
||||||
try? m.player.stop(atTime: CHHapticTimeImmediate)
|
try? m.player.stop(atTime: CHHapticTimeImmediate)
|
||||||
m.engine.stop()
|
m.engine.stop()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user