Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions Sources/LiveKit/Core/Room+EngineDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ extension Room {

// Re-send track permissions
if case .connected = state.connectionState {
Task {
Task { [weak self] in
guard let self else { return }
do {
try await localParticipant.sendTrackSubscriptionPermissions()
} catch {
Expand Down Expand Up @@ -110,7 +111,8 @@ extension Room {
}

// Notify change when engine's state mutates
Task { @MainActor in
Task { @MainActor [weak self] in
guard let self else { return }
self.objectWillChange.send()
}
}
Expand Down Expand Up @@ -293,7 +295,8 @@ extension Room {
let responseTimeout = TimeInterval(UInt64(request.responseTimeoutMs) / UInt64(msecPerSec))
let version = Int(request.version)

Task {
Task { [weak self] in
guard let self else { return }
await localParticipant.handleIncomingRpcRequest(callerIdentity: callerIdentity,
requestId: requestId,
method: method,
Expand Down
12 changes: 8 additions & 4 deletions Sources/LiveKit/Core/Room.swift
Original file line number Diff line number Diff line change
Expand Up @@ -568,7 +568,8 @@ extension Room: AppStateDelegate {

guard !cameraVideoTracks.isEmpty else { return }

Task.detached {
Task.detached { [weak self] in
guard let self else { return }
for cameraVideoTrack in cameraVideoTracks {
do {
try await cameraVideoTrack.suspend()
Expand All @@ -584,7 +585,8 @@ extension Room: AppStateDelegate {

guard !cameraVideoTracks.isEmpty else { return }

Task.detached {
Task.detached { [weak self] in
guard let self else { return }
for cameraVideoTrack in cameraVideoTracks {
do {
try await cameraVideoTrack.resume()
Expand All @@ -598,13 +600,15 @@ extension Room: AppStateDelegate {
func appWillTerminate() {
// attempt to disconnect if already connected.
// this is not guranteed since there is no reliable way to detect app termination.
Task.detached {
Task.detached { [weak self] in
guard let self else { return }
await self.disconnect()
}
}

func appWillSleep() {
Task.detached {
Task.detached { [weak self] in
guard let self else { return }
await self.disconnect()
}
}
Expand Down
9 changes: 6 additions & 3 deletions Sources/LiveKit/Core/SignalClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,8 @@ actor SignalClient: Loggable {
token: token,
connectOptions: connectOptions)

let task = Task.detached {
let task = Task.detached { [weak self] in
guard let self else { return }
self.log("Did enter WebSocket message loop...")
do {
for try await message in socket {
Expand Down Expand Up @@ -259,7 +260,8 @@ private extension SignalClient {
return
}

Task.detached {
Task.detached { [weak self] in
guard let self else { return }
let alwaysProcess = switch response.message {
case .join, .reconnect, .leave: true
default: false
Expand Down Expand Up @@ -587,7 +589,8 @@ extension SignalClient {

defer {
if shouldDisconnect {
Task.detached {
Task.detached { [weak self] in
guard let self else { return }
await self.cleanUp()
}
}
Expand Down