MTBlingController *bling;
NSTimer *registerTimer;
- BOOL timerUpdating;
+ BOOL timerUpdating, _checkingForServer;
BOOL blinged;
+ NSLock *_serverCheckLock;
}
+ (MainController *)sharedController;
- (void)checkForRemoteServerAndConnectImmediately:(BOOL)connectImmediately
{
ITDebugLog(@"Checking for remote server.");
- [NSThread detachNewThreadSelector:@selector(runRemoteServerCheck:) toTarget:self withObject:[NSNumber numberWithBool:connectImmediately]];
+ if (!_checkingForServer) {
+ if (!_serverCheckLock) {
+ _serverCheckLock = [[NSLock alloc] init];
+ }
+ [_serverCheckLock lock];
+ _checkingForServer = YES;
+ [_serverCheckLock unlock];
+ [NSThread detachNewThreadSelector:@selector(runRemoteServerCheck:) toTarget:self withObject:[NSNumber numberWithBool:connectImmediately]];
+ }
}
- (void)runRemoteServerCheck:(id)sender
ITDebugLog(@"Remote server not found.");
[self performSelectorOnMainThread:@selector(remoteServerNotFound:) withObject:nil waitUntilDone:NO];
}
+ [_serverCheckLock lock];
+ _checkingForServer = NO;
+ [_serverCheckLock unlock];
[pool release];
}
[statusWindowController release];
[menuController release];
[networkController release];
+ [_serverCheckLock release];
[super dealloc];
}
[[MainController sharedController] networkError:localException];
NS_ENDHANDLER
ITDebugLog(@"Releasing old submenus.");
+ ITDebugLog(@" - Rating menu");
[_ratingMenu release];
+ ITDebugLog(@" - Upcoming songs menu");
[_upcomingSongsMenu release];
+ ITDebugLog(@" - Playlists menu");
[_playlistsMenu release];
+ ITDebugLog(@" - EQ menu");
[_eqMenu release];
ITDebugLog(@"Beginning Rebuild of \"Song Rating\" submenu.");
_ratingMenu = [self ratingMenu];
ITDebugLog(@"Getting equalizer enabled status.");
int thingy = [[ITAppleEventCenter sharedCenter] sendAEWithSendStringForNumber:@"'----':obj { form:type('prop'), want:type('prop'), seld:type('pEQ '), from:() }" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
ITDebugLog(@"Done getting equalizer enabled status.");
- return thingy;
+ return (thingy != 0) ? YES : NO;
}
- (BOOL)setEqualizerEnabled:(BOOL)enabled