diff --git a/ios/App/Shared/player/AudioPlayer.swift b/ios/App/Shared/player/AudioPlayer.swift index 1d599d91..3089af68 100644 --- a/ios/App/Shared/player/AudioPlayer.swift +++ b/ios/App/Shared/player/AudioPlayer.swift @@ -299,9 +299,12 @@ class AudioPlayer: NSObject { // Start playback, with a seek, for as smooth a scrub bar start as possible let currentTrackStartOffset = session.audioTracks[self.currentTrackIndex].startOffset ?? 0.0 let seekTime = currentTime - currentTrackStartOffset - self.audioPlayer.seek(to: CMTime(seconds: seekTime, preferredTimescale: 1000), toleranceBefore: .zero, toleranceAfter: .zero) { [weak self] completed in - guard completed else { return } - self?.resumePlayback() + + DispatchQueue.runOnMainQueue { + self.audioPlayer.seek(to: CMTime(seconds: seekTime, preferredTimescale: 1000), toleranceBefore: .zero, toleranceAfter: .zero) { [weak self] completed in + guard completed else { return } + self?.resumePlayback() + } } } @@ -337,8 +340,10 @@ class AudioPlayer: NSObject { self.stopPausedTimer() self.markAudioSessionAs(active: true) - self.audioPlayer.play() - self.audioPlayer.rate = self.tmpRate + DispatchQueue.runOnMainQueue { + self.audioPlayer.play() + self.audioPlayer.rate = self.tmpRate + } self.status = 1 // Update the progress @@ -349,7 +354,9 @@ class AudioPlayer: NSObject { guard self.isInitialized() else { return } NSLog("PAUSE: Pausing playback") - self.audioPlayer.pause() + DispatchQueue.runOnMainQueue { + self.audioPlayer.pause() + } self.markAudioSessionAs(active: false) Task { @@ -394,9 +401,11 @@ class AudioPlayer: NSObject { self.status = -1 let playerItems = self.allPlayerItems[indexOfSeek..