Implemented pause on startup

CQTexperiment
Chris Moeller 2013-10-12 19:16:47 -07:00
parent ee29955db0
commit 759aeab4fb
7 changed files with 42 additions and 8 deletions

View File

@ -284,7 +284,7 @@ increase/decrease as long as the user holds the left/right, plus/minus button */
if (lastStatus != kCogStatusStopped && lastIndex >= 0) if (lastStatus != kCogStatusStopped && lastIndex >= 0)
{ {
[playbackController playEntryAtIndex:lastIndex]; [playbackController playEntryAtIndex:lastIndex startPaused:(lastStatus == kCogStatusPaused)];
[playbackController seek:[NSNumber numberWithDouble:[[NSUserDefaults standardUserDefaults] floatForKey:@"lastTrackPosition"]]]; [playbackController seek:[NSNumber numberWithDouble:[[NSUserDefaults standardUserDefaults] floatForKey:@"lastTrackPosition"]]];
} }

View File

@ -72,7 +72,9 @@ extern NSDictionary * makeRGInfo(PlaylistEntry *pe);
- (void)audioFadeUp:(NSTimer *)audioTimer; - (void)audioFadeUp:(NSTimer *)audioTimer;
- (void)playEntryAtIndex:(int)i; - (void)playEntryAtIndex:(int)i;
- (void)playEntryAtIndex:(int)i startPaused:(BOOL)paused;
- (void)playEntry:(PlaylistEntry *)pe; - (void)playEntry:(PlaylistEntry *)pe;
- (void)playEntry:(PlaylistEntry *)pe startPaused:(BOOL)paused;
// Playlist notifications // Playlist notifications
- (void)playlistDidChange:(PlaylistController *)p; - (void)playlistDidChange:(PlaylistController *)p;

View File

@ -104,10 +104,15 @@ NSString *CogPlaybackDidStopNotficiation = @"CogPlaybackDidStopNotficiation";
//called by double-clicking on table //called by double-clicking on table
- (void)playEntryAtIndex:(int)i - (void)playEntryAtIndex:(int)i
{
[self playEntryAtIndex:i startPaused:NO];
}
- (void)playEntryAtIndex:(int)i startPaused:(BOOL)paused
{ {
PlaylistEntry *pe = [playlistController entryAtIndex:i]; PlaylistEntry *pe = [playlistController entryAtIndex:i];
[self playEntry:pe]; [self playEntry:pe startPaused:paused];
} }
@ -137,6 +142,11 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe)
} }
- (void)playEntry:(PlaylistEntry *)pe - (void)playEntry:(PlaylistEntry *)pe
{
[self playEntry:pe startPaused:NO];
}
- (void)playEntry:(PlaylistEntry *)pe startPaused:(BOOL)paused
{ {
if (playbackStatus != kCogStatusStopped) if (playbackStatus != kCogStatusStopped)
[self stop:self]; [self stop:self];
@ -154,7 +164,7 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe)
[pe performSelectorOnMainThread:@selector(setMetadata:) withObject:[playlistLoader readEntryInfo:pe] waitUntilDone:YES]; [pe performSelectorOnMainThread:@selector(setMetadata:) withObject:[playlistLoader readEntryInfo:pe] waitUntilDone:YES];
} }
[audioPlayer play:[pe URL] withUserInfo:pe withRGInfo:makeRGInfo(pe)]; [audioPlayer play:[pe URL] withUserInfo:pe withRGInfo:makeRGInfo(pe) startPaused:paused];
} }
- (IBAction)next:(id)sender - (IBAction)next:(id)sender
@ -188,6 +198,8 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe)
[audioPlayer seekToTime:time]; [audioPlayer seekToTime:time];
[self setPosition:time];
[[playlistController currentEntry] setCurrentPosition:time]; [[playlistController currentEntry] setCurrentPosition:time];
} }

View File

@ -28,6 +28,8 @@
BOOL outputLaunched; BOOL outputLaunched;
BOOL endOfInputReached; BOOL endOfInputReached;
BOOL startedPaused;
BOOL initialBufferFilled;
} }
- (id)init; - (id)init;
@ -37,6 +39,7 @@
- (void)play:(NSURL *)url; - (void)play:(NSURL *)url;
- (void)play:(NSURL *)url withUserInfo:(id)userInfo withRGInfo:(NSDictionary*)rgi; - (void)play:(NSURL *)url withUserInfo:(id)userInfo withRGInfo:(NSDictionary*)rgi;
- (void)play:(NSURL *)url withUserInfo:(id)userInfo withRGInfo:(NSDictionary*)rgi startPaused:(BOOL)paused;
- (void)stop; - (void)stop;
- (void)pause; - (void)pause;

View File

@ -45,10 +45,15 @@
- (void)play:(NSURL *)url - (void)play:(NSURL *)url
{ {
[self play:url withUserInfo:nil withRGInfo:nil]; [self play:url withUserInfo:nil withRGInfo:nil startPaused:NO];
} }
- (void)play:(NSURL *)url withUserInfo:(id)userInfo withRGInfo:(NSDictionary *)rgi - (void)play:(NSURL *)url withUserInfo:(id)userInfo withRGInfo:(NSDictionary *)rgi
{
[self play:url withUserInfo:userInfo withRGInfo:rgi startPaused:NO];
}
- (void)play:(NSURL *)url withUserInfo:(id)userInfo withRGInfo:(NSDictionary *)rgi startPaused:(BOOL)paused
{ {
if (output) if (output)
{ {
@ -101,8 +106,13 @@
[self setShouldContinue:YES]; [self setShouldContinue:YES];
outputLaunched = NO; outputLaunched = NO;
startedPaused = paused;
initialBufferFilled = NO;
[bufferChain launchThreads]; [bufferChain launchThreads];
if (paused)
[self setPlaybackStatus:kCogStatusPaused waitUntilDone:YES];
} }
- (void)stop - (void)stop
@ -121,6 +131,13 @@
- (void)resume - (void)resume
{ {
if (startedPaused)
{
startedPaused = NO;
if (initialBufferFilled)
[self launchOutputThread];
}
[output resume]; [output resume];
[self setPlaybackStatus:kCogStatusPlaying waitUntilDone:YES]; [self setPlaybackStatus:kCogStatusPlaying waitUntilDone:YES];
@ -200,7 +217,8 @@
- (void)launchOutputThread - (void)launchOutputThread
{ {
if (outputLaunched == NO) { initialBufferFilled = YES;
if (outputLaunched == NO && startedPaused == NO) {
[self setPlaybackStatus:kCogStatusPlaying]; [self setPlaybackStatus:kCogStatusPlaying];
[output launchThread]; [output launchThread];
outputLaunched = YES; outputLaunched = YES;

View File

@ -75,7 +75,6 @@ typedef enum {
- (IBAction)toggleRepeat:(id)sender; - (IBAction)toggleRepeat:(id)sender;
- (IBAction)sortByPath;
- (IBAction)randomizeList:(id)sender; - (IBAction)randomizeList:(id)sender;
- (IBAction)showEntryInFinder:(id)sender; - (IBAction)showEntryInFinder:(id)sender;

View File

@ -299,7 +299,7 @@
- (void)insertObjects:(NSArray *)objects atArrangedObjectIndexes:(NSIndexSet *)indexes - (void)insertObjects:(NSArray *)objects atArrangedObjectIndexes:(NSIndexSet *)indexes
{ {
[[[self undoManager] prepareWithInvocationTarget:self] removeObjectsAtArrangedObjectIndexes:indexes]; [[[self undoManager] prepareWithInvocationTarget:self] removeObjectsAtArrangedObjectIndexes:indexes];
NSString *actionName = [NSString stringWithFormat:@"Adding %d entries", [objects count]]; NSString *actionName = [NSString stringWithFormat:@"Adding %lu entries", (unsigned long)[objects count]];
[[self undoManager] setActionName:actionName]; [[self undoManager] setActionName:actionName];
[super insertObjects:objects atArrangedObjectIndexes:indexes]; [super insertObjects:objects atArrangedObjectIndexes:indexes];
@ -312,7 +312,7 @@
{ {
NSArray *objects = [[self content] objectsAtIndexes:indexes]; NSArray *objects = [[self content] objectsAtIndexes:indexes];
[[[self undoManager] prepareWithInvocationTarget:self] insertObjects:objects atArrangedObjectIndexes:indexes]; [[[self undoManager] prepareWithInvocationTarget:self] insertObjects:objects atArrangedObjectIndexes:indexes];
NSString *actionName = [NSString stringWithFormat:@"Removing %d entries", [indexes count]]; NSString *actionName = [NSString stringWithFormat:@"Removing %lu entries", (unsigned long)[indexes count]];
[[self undoManager] setActionName:actionName]; [[self undoManager] setActionName:actionName];
DLog(@"Removing indexes: %@", indexes); DLog(@"Removing indexes: %@", indexes);