From 5481838f513aaae38088f7b446ad6ea76dba9a25 Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Sat, 19 Jun 2004 03:30:32 +0000 Subject: [PATCH] Added checking to prevent cascading threads and server checks. --- MainController.h | 3 ++- MainController.m | 14 +++++++++++++- MenuController.m | 4 ++++ iTunesRemote.m | 2 +- libValidate.a | Bin 8032 -> 8032 bytes 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/MainController.h b/MainController.h index 40887f9..f5c0834 100755 --- a/MainController.h +++ b/MainController.h @@ -43,8 +43,9 @@ MTBlingController *bling; NSTimer *registerTimer; - BOOL timerUpdating; + BOOL timerUpdating, _checkingForServer; BOOL blinged; + NSLock *_serverCheckLock; } + (MainController *)sharedController; diff --git a/MainController.m b/MainController.m index ecf39ba..65c718c 100755 --- a/MainController.m +++ b/MainController.m @@ -1138,7 +1138,15 @@ static 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 @@ -1156,6 +1164,9 @@ static MainController *sharedController; ITDebugLog(@"Remote server not found."); [self performSelectorOnMainThread:@selector(remoteServerNotFound:) withObject:nil waitUntilDone:NO]; } + [_serverCheckLock lock]; + _checkingForServer = NO; + [_serverCheckLock unlock]; [pool release]; } @@ -1288,6 +1299,7 @@ static MainController *sharedController; [statusWindowController release]; [menuController release]; [networkController release]; + [_serverCheckLock release]; [super dealloc]; } diff --git a/MenuController.m b/MenuController.m index a8e79e4..998cf20 100755 --- a/MenuController.m +++ b/MenuController.m @@ -471,9 +471,13 @@ [[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]; diff --git a/iTunesRemote.m b/iTunesRemote.m index ae430a7..b4a745c 100755 --- a/iTunesRemote.m +++ b/iTunesRemote.m @@ -512,7 +512,7 @@ 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 diff --git a/libValidate.a b/libValidate.a index a3d44e3eda4541e93b62ece65b95a244b8045e36..e2b343518f505b6b29ab50f60b288252a3752b51 100755 GIT binary patch delta 19 acmaE0_rPv~6o-YWsj-=*h3Q5mJ9z*^GzHKA delta 19 acmaE0_rPv~6o