Bug Fix: Set seek position when resuming paused
And a minor reoder of seek time reset code. Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This commit is contained in:
parent
3f424cf5b0
commit
7bb6070350
4 changed files with 21 additions and 3 deletions
|
@ -878,6 +878,15 @@ NSDictionary *makeRGInfo(PlaylistEntry *pe) {
|
|||
}
|
||||
}
|
||||
|
||||
- (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]];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -131,8 +131,12 @@
|
|||
|
||||
[bufferChain launchThreads];
|
||||
|
||||
if(paused)
|
||||
if(paused) {
|
||||
[self setPlaybackStatus:CogStatusPaused waitUntilDone:YES];
|
||||
if(time > 0.0) {
|
||||
[self updatePosition:userInfo];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)stop {
|
||||
|
@ -247,6 +251,10 @@
|
|||
[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];
|
||||
}
|
||||
|
|
|
@ -164,24 +164,24 @@ static void *kInputNodeContext = &kInputNodeContext;
|
|||
[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!");
|
||||
|
||||
|
|
Loading…
Reference in a new issue