From 02d1b78a36f32c89713d3cb5a4a7cc9eb00ad3cb Mon Sep 17 00:00:00 2001 From: snaeji Date: Sun, 20 Sep 2020 16:30:53 +0000 Subject: [PATCH] Fix Airplay crash issue (#186) * Update UriAudioSource.m * Fix issue when starting route is Airplay and no seekableTimeRanges available Co-authored-by: snaebjornl --- darwin/Classes/UriAudioSource.m | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/darwin/Classes/UriAudioSource.m b/darwin/Classes/UriAudioSource.m index 9945a0a..4003bd1 100644 --- a/darwin/Classes/UriAudioSource.m +++ b/darwin/Classes/UriAudioSource.m @@ -50,16 +50,19 @@ - (void)seek:(CMTime)position completionHandler:(void (^)(BOOL))completionHandler { if (!completionHandler || (_playerItem.status == AVPlayerItemStatusReadyToPlay)) { - CMTimeRange seekableRange = [_playerItem.seekableTimeRanges.lastObject CMTimeRangeValue]; - CMTime relativePosition = CMTimeAdd(position, seekableRange.start); - [_playerItem seekToTime:relativePosition toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero completionHandler:completionHandler]; + NSValue *seekableRange = _playerItem.seekableTimeRanges.lastObject; + if (seekableRange) { + CMTimeRange range = [seekableRange CMTimeRangeValue]; + position = CMTimeAdd(position, range.start); + } + [_playerItem seekToTime:position toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero completionHandler:completionHandler]; } } - (CMTime)duration { NSValue *seekableRange = _playerItem.seekableTimeRanges.lastObject; if (seekableRange) { - CMTimeRange seekableDuration = [seekableRange CMTimeRangeValue];; + CMTimeRange seekableDuration = [seekableRange CMTimeRangeValue]; return seekableDuration.duration; } else {