Skip to content

Commit

Permalink
Bug Fix: Set seek position when resuming paused
Browse files Browse the repository at this point in the history
And a minor reoder of seek time reset code.

Signed-off-by: Christopher Snowhill <[email protected]>
  • Loading branch information
kode54 committed Feb 16, 2025
1 parent b8698ea commit dd5be9b
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 3 deletions.
9 changes: 9 additions & 0 deletions Application/PlaybackController.m
Original file line number Diff line number Diff line change
Expand Up @@ -878,6 +878,15 @@ - (void)audioPlayer:(AudioPlayer *)player reportPlayCountForTrack:(id)userInfo {
}
}

- (void)audioPlayer:(AudioPlayer *)player updatePosition:(id)userInfo {
if(userInfo) {
PlaylistEntry *pe = (PlaylistEntry *)userInfo;
if([pe current]) {
[self updatePosition:userInfo];
}
}
}

- (void)audioPlayer:(AudioPlayer *)player setError:(NSNumber *)status toTrack:(id)userInfo {
PlaylistEntry *pe = (PlaylistEntry *)userInfo;
[pe setError:[status boolValue]];
Expand Down
1 change: 1 addition & 0 deletions Audio/AudioPlayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,5 +138,6 @@
- (void)audioPlayer:(AudioPlayer *)player restartPlaybackAtCurrentPosition:(id)userInfo;
- (void)audioPlayer:(AudioPlayer *)player pushInfo:(NSDictionary *)info toTrack:(id)userInfo;
- (void)audioPlayer:(AudioPlayer *)player reportPlayCountForTrack:(id)userInfo;
- (void)audioPlayer:(AudioPlayer *)player updatePosition:(id)userInfo;
- (void)audioPlayer:(AudioPlayer *)player setError:(NSNumber *)status toTrack:(id)userInfo;
@end
10 changes: 9 additions & 1 deletion Audio/AudioPlayer.m
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,12 @@ - (void)play:(NSURL *)url withUserInfo:(id)userInfo withRGInfo:(NSDictionary *)r

[bufferChain launchThreads];

if(paused)
if(paused) {
[self setPlaybackStatus:CogStatusPaused waitUntilDone:YES];
if(time > 0.0) {
[self updatePosition:userInfo];
}
}
}

- (void)stop {
Expand Down Expand Up @@ -247,6 +251,10 @@ - (void)restartPlaybackAtCurrentPosition {
[self sendDelegateMethod:@selector(audioPlayer:restartPlaybackAtCurrentPosition:) withObject:previousUserInfo waitUntilDone:NO];
}

- (void)updatePosition:(id)userInfo {
[self sendDelegateMethod:@selector(audioPlayer:updatePosition:) withObject:userInfo waitUntilDone:NO];
}

- (void)pushInfo:(NSDictionary *)info toTrack:(id)userInfo {
[self sendDelegateMethod:@selector(audioPlayer:pushInfo:toTrack:) withObject:info withObject:userInfo waitUntilDone:NO];
}
Expand Down
4 changes: 2 additions & 2 deletions Audio/Chain/InputNode.m
Original file line number Diff line number Diff line change
Expand Up @@ -164,24 +164,24 @@ - (void)process {
[bufferChain setVolume:0.0];

ConverterNode *converter = [bufferChain converter];
VisualizationNode *visualization = [bufferChain visualization];
DSPRubberbandNode *rubberband = [bufferChain rubberband];
DSPFSurroundNode *fsurround = [bufferChain fsurround];
DSPEqualizerNode *equalizer = [bufferChain equalizer];
DSPHRTFNode *hrtf = [bufferChain hrtf];
DSPDownmixNode *downmix = [bufferChain downmix];
VisualizationNode *visualization = [bufferChain visualization];
DLog(@"SEEKING! Resetting Buffer");

// This resets the converter's buffer
[self resetBuffer];
[converter resetBuffer];
[converter inputFormatDidChange:[bufferChain inputFormat] inputConfig:[bufferChain inputConfig]];
[visualization resetBuffer];
[rubberband resetBuffer];
[fsurround resetBuffer];
[equalizer resetBuffer];
[hrtf resetBuffer];
[downmix resetBuffer];
[visualization resetBuffer];

DLog(@"Reset buffer!");

Expand Down

0 comments on commit dd5be9b

Please sign in to comment.