From: Kent Sutherland Date: Wed, 4 Feb 2004 00:38:56 +0000 (+0000) Subject: Fixed the STUPID BUG where the multisource playlist thing would crash X-Git-Tag: v1.3~44 X-Git-Url: http://git.ithinksw.org/MenuTunes.git/commitdiff_plain/f7e2632e0797735e202e5837edeaa3f21fd8d382 Fixed the STUPID BUG where the multisource playlist thing would crash when iTunes restarts. --- diff --git a/MenuController.m b/MenuController.m index 4ab0bf4..dfd4f49 100755 --- a/MenuController.m +++ b/MenuController.m @@ -497,7 +497,6 @@ if (_currentPlaylist && !_playingRadio) { if (numSongs > 0) { int i; - for (i = _currentTrack + 1; i <= _currentTrack + numSongsInAdvance; i++) { if (i <= numSongs) { NSString *curSong; @@ -575,6 +574,9 @@ int i, j; NS_DURING playlists = [[[MainController sharedController] currentRemote] playlists]; + /*playlists = [NSArray arrayWithObjects: + [NSArray arrayWithObjects:@"Library", [NSNumber numberWithInt:-1], @"Library", @"Playlist", nil], + [NSArray arrayWithObjects:@"Radio", [NSNumber numberWithInt:1], @"Radio", nil], nil];*/ NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER diff --git a/iTunesRemote.h b/iTunesRemote.h index fc1e3a0..a5832bb 100755 --- a/iTunesRemote.h +++ b/iTunesRemote.h @@ -14,6 +14,7 @@ @interface iTunesRemote : ITMTRemote { + BOOL _winClosed; ProcessSerialNumber savedPSN; } - (ProcessSerialNumber)iTunesPSN; diff --git a/iTunesRemote.m b/iTunesRemote.m index ad8a4b8..f330917 100755 --- a/iTunesRemote.m +++ b/iTunesRemote.m @@ -65,6 +65,10 @@ - (BOOL)showPrimaryInterface { ITDebugLog(@"Showing player primary interface."); + + //If the window is closed + _winClosed = YES; + //If not minimized and visible if ( ([[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:'prop', want:type('prop'), seld:type('pMin'), from:obj { form:'indx', want:type('cBrW'), seld:1, from:'null'() } }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] == 0) && ([[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:'prop', want:type('prop'), seld:type('pvis'), from:obj { form:'indx', want:type('cBrW'), seld:1, from:'null'() } }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] != 0) && @@ -147,43 +151,49 @@ //Full source awareness - (NSArray *)playlists -{ unsigned long i,k; +{ + unsigned long i, k; const signed long numSources = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"kocl:type('cSrc'), '----':()" eventClass:@"core" eventID:@"cnte" appPSN:savedPSN]; NSMutableArray *allSources = [[NSMutableArray alloc] init]; ITDebugLog(@"Getting playlists."); + if (numSources == 0) { + ITDebugLog(@"No sources."); + return nil; + } + for (k = 1; k <= numSources ; k++) { const signed long numPlaylists = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:[NSString stringWithFormat:@"kocl:type('cPly'), '----':obj { form:'indx', want:type('cSrc'), seld:long(%u), from:() }",k] eventClass:@"core" eventID:@"cnte" appPSN:savedPSN]; unsigned long fourcc = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pKnd'), from:obj { form:'indx', want:type('cSrc'), seld:long(%u), from:() } }",k] eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; NSString *sourceName = [[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cSrc'), seld:long(%u), from:() } }",k] eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; - NSNumber *sourceClass; + unsigned long class; NSMutableArray *aSource = [[NSMutableArray alloc] init]; [aSource addObject:sourceName]; switch (fourcc) { case 'kTun': - sourceClass = [NSNumber numberWithInt:ITMTRemoteRadioSource]; + class = ITMTRemoteRadioSource; break; case 'kDev': - sourceClass = [NSNumber numberWithInt:ITMTRemoteGenericDeviceSource]; + class = ITMTRemoteGenericDeviceSource; break; case 'kPod': - sourceClass = [NSNumber numberWithInt:ITMTRemoteiPodSource]; + class = ITMTRemoteiPodSource; break; case 'kMCD': case 'kACD': - sourceClass = [NSNumber numberWithInt:ITMTRemoteCDSource]; + class = ITMTRemoteCDSource; break; case 'kShd': - sourceClass = [NSNumber numberWithInt:ITMTRemoteSharedLibrarySource]; + class = ITMTRemoteSharedLibrarySource; break; case 'kUnk': case 'kLib': default: - sourceClass = [NSNumber numberWithInt:ITMTRemoteLibrarySource]; + class = ITMTRemoteLibrarySource; break; } - ITDebugLog(@"Adding source %@ of type %i", sourceName, [sourceClass intValue]); - [aSource addObject:sourceClass]; + ITDebugLog(@"Adding source %@ of type %i", sourceName, class); + [aSource addObject:[NSNumber numberWithInt:class]]; for (i = 1; i <= numPlaylists; i++) { NSString *sendStr = [NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'indx', want:type('cPly'), seld:long(%u), from:obj { form:'indx', want:type('cSrc'), seld:long(%u), from:() } } }",i,k]; NSString *theObj = [[ITAppleEventCenter sharedCenter] sendAEWithSendString:sendStr eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; @@ -322,9 +332,6 @@ { int temp1; ITDebugLog(@"Getting current song index."); - - if ([self currentSource] == ITMTRemoteRadioSource) - temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pidx" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; ITDebugLog(@"Getting current song index done."); return temp1;