From fd586f4380ec28414ba876a2ab0ab523e5f37132 Mon Sep 17 00:00:00 2001 From: Mitchell Livingston Date: Mon, 7 May 2007 04:28:17 +0000 Subject: [PATCH] disable option to pause torrents that are checking to avoid freezes --- macosx/Controller.m | 8 ++++---- macosx/Torrent.h | 17 +++++++++-------- macosx/Torrent.m | 9 +++++++-- macosx/TorrentTableView.m | 2 +- 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/macosx/Controller.m b/macosx/Controller.m index f85a66736..989877b3a 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -2398,7 +2398,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy Torrent * torrent; NSEnumerator * enumerator = [fTorrents objectEnumerator]; while ((torrent = [enumerator nextObject])) - if ([torrent isActive] || [torrent waitingToStart]) + if (([torrent isActive] && ![torrent isChecking]) || [torrent waitingToStart]) return YES; return NO; } @@ -2421,7 +2421,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy Torrent * torrent; while ((torrent = [enumerator nextObject])) { - if ([torrent isActive] || [torrent waitingToStart]) + if (([torrent isActive] && ![torrent isChecking]) || [torrent waitingToStart]) return YES; } return NO; @@ -2551,7 +2551,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy Torrent * torrent; NSEnumerator * enumerator = [fTorrents objectEnumerator]; while ((torrent = [enumerator nextObject])) - if ([torrent isActive] || [torrent waitingToStart]) + if (([torrent isActive] && ![torrent isChecking]) || [torrent waitingToStart]) return YES; return NO; } @@ -2604,7 +2604,7 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy NSEnumerator * enumerator = [[fDisplayedTorrents objectsAtIndexes: [fTableView selectedRowIndexes]] objectEnumerator]; Torrent * torrent; while ((torrent = [enumerator nextObject])) - if ([torrent isActive] || [torrent waitingToStart]) + if (([torrent isActive] && ![torrent isChecking]) || [torrent waitingToStart]) return YES; return NO; } diff --git a/macosx/Torrent.h b/macosx/Torrent.h index d69d34c98..c07cbc956 100644 --- a/macosx/Torrent.h +++ b/macosx/Torrent.h @@ -146,15 +146,16 @@ - (NSString *) stateString; -- (float) progress; -- (int) eta; +- (float) progress; +- (int) eta; -- (BOOL) isActive; -- (BOOL) isSeeding; -- (BOOL) isPaused; -- (BOOL) isError; -- (NSString *) errorMessage; -- (BOOL) justFinished; +- (BOOL) isActive; +- (BOOL) isSeeding; +- (BOOL) isPaused; +- (BOOL) isChecking; +- (BOOL) isError; +- (NSString *) errorMessage; +- (BOOL) justFinished; - (NSArray *) peers; diff --git a/macosx/Torrent.m b/macosx/Torrent.m index fa10075d8..dbbf475a9 100644 --- a/macosx/Torrent.m +++ b/macosx/Torrent.m @@ -511,7 +511,7 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80 fError = NO; fWaitToStart = NO; - if ([self isActive]) + if ([self isActive] && ![self isChecking]) { tr_torrentStop(fHandle); [self update]; @@ -522,7 +522,7 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80 - (void) stopTransferForQuit { - if ([self isActive]) + if ([self isActive] && ![self isChecking]) tr_torrentStop(fHandle); } @@ -954,6 +954,11 @@ static uint32_t kRed = BE(0xFF6450FF), //255, 100, 80 return fStat->status == TR_STATUS_PAUSE; } +- (BOOL) isChecking +{ + return fStat->status == TR_STATUS_CHECK; +} + - (BOOL) isError { return fStat->error != 0; diff --git a/macosx/TorrentTableView.m b/macosx/TorrentTableView.m index 5368dd13f..88a123af9 100644 --- a/macosx/TorrentTableView.m +++ b/macosx/TorrentTableView.m @@ -249,7 +249,7 @@ torrent = [fTorrents objectAtIndex: i]; rect = [self pauseRectForRow: i]; - if ([torrent isActive]) + if ([torrent isActive] && ![torrent isChecking]) image = NSPointInRect(fClickPoint, rect) ? fPauseOnIcon : fPauseOffIcon; else if ([torrent isPaused]) {