diff --git a/Sources/CSFBAudioEngine/Player/AudioPlayer.mm b/Sources/CSFBAudioEngine/Player/AudioPlayer.mm index 25517ee0..c5755667 100644 --- a/Sources/CSFBAudioEngine/Player/AudioPlayer.mm +++ b/Sources/CSFBAudioEngine/Player/AudioPlayer.mm @@ -2222,9 +2222,8 @@ Flags clearFlags(Flags flags, std::memory_order order = std::memory_order_acq_re auto shouldStop = true; if (__strong id delegate = player.delegate; - delegate != nil && [delegate respondsToSelector:@selector(audioPlayerEndOfAudio:)]) { - [delegate audioPlayerEndOfAudio:player]; - shouldStop = false; + delegate != nil && [delegate respondsToSelector:@selector(audioPlayerShouldStopAtEndOfAudio:)]) { + shouldStop = [delegate audioPlayerShouldStopAtEndOfAudio:player]; } if (shouldStop) { diff --git a/Sources/CSFBAudioEngine/include/SFBAudioEngine/SFBAudioPlayer.h b/Sources/CSFBAudioEngine/include/SFBAudioEngine/SFBAudioPlayer.h index 1fed2bad..addd9b54 100644 --- a/Sources/CSFBAudioEngine/include/SFBAudioEngine/SFBAudioPlayer.h +++ b/Sources/CSFBAudioEngine/include/SFBAudioEngine/SFBAudioPlayer.h @@ -365,9 +365,11 @@ NS_SWIFT_NAME(AudioPlayer.Delegate) /// - parameter audioPlayer: The `SFBAudioPlayer` object /// - parameter playbackState: The current playback state - (void)audioPlayer:(SFBAudioPlayer *)audioPlayer playbackStateChanged:(SFBAudioPlayerPlaybackState)playbackState; -/// Called to notify the delegate when rendering is complete for all available decoders +/// Called to query the delegate whether playback should stop when rendering is complete for all available decoders /// - parameter audioPlayer: The `SFBAudioPlayer` object -- (void)audioPlayerEndOfAudio:(SFBAudioPlayer *)audioPlayer NS_SWIFT_NAME(audioPlayerEndOfAudio(_:)); +/// - returns: `YES` if the player should stop playback, `NO` to continue rendering silence +- (BOOL)audioPlayerShouldStopAtEndOfAudio:(SFBAudioPlayer *)audioPlayer + NS_SWIFT_NAME(audioPlayerShouldStopAtEndOfAudio(_:)); /// Called to notify the delegate after performing a user-initiated seek in a decoder /// - warning: Do not change any properties of `decoder` /// - parameter audioPlayer: The `SFBAudioPlayer` object processing `decoder`