]> granicus.if.org Git - transmission/commitdiff
small adjustments to the queue
authorMitchell Livingston <livings124@transmissionbt.com>
Fri, 16 Oct 2009 23:02:55 +0000 (23:02 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Fri, 16 Oct 2009 23:02:55 +0000 (23:02 +0000)
macosx/Controller.h
macosx/Controller.m
macosx/en.lproj/Localizable.strings

index e0f865be9568321eb76f36bd1192ca8e1f8bae5a..9cd08ed86a03258eaa821c8a751db71ba55552d9 100644 (file)
@@ -186,7 +186,7 @@ typedef enum
 - (void) updateSpeedFieldsToolTips;
 
 - (void) updateTorrentsInQueue;
-- (NSInteger) numToStartFromQueue: (BOOL) downloadQueue;
+- (NSUInteger) numToStartFromQueue: (BOOL) downloadQueue;
 
 - (void) torrentFinishedDownloading: (NSNotification *) notification;
 - (void) torrentRestartedDownloading: (NSNotification *) notification;
index dfa6d0a8b7e3d1a1df55fd912b4ecb19fe05d565..e7c195bf42fbdc444105a10b60e3e20fa82d7403 100644 (file)
@@ -1688,33 +1688,33 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
 
 - (void) updateTorrentsInQueue
 {
-    BOOL download = [fDefaults boolForKey: @"Queue"],
-        seed = [fDefaults boolForKey: @"QueueSeed"];
-    
-    NSInteger desiredDownloadActive = [self numToStartFromQueue: YES],
-        desiredSeedActive = [self numToStartFromQueue: NO];
+    NSUInteger desiredDownloadActive = [fDefaults boolForKey: @"Queue"] ? [self numToStartFromQueue: YES] : NSUIntegerMax,
+                desiredSeedActive = [fDefaults boolForKey: @"QueueSeed"] ? [self numToStartFromQueue: NO] : NSUIntegerMax;
     
     for (Torrent * torrent in fTorrents)
     {
+        if (desiredDownloadActive == 0 && desiredSeedActive == 0)
+            break;
+        
         if (![torrent isActive] && ![torrent isChecking] && [torrent waitingToStart])
         {
             if (![torrent allDownloaded])
             {
-                if (!download || desiredDownloadActive > 0)
+                if (desiredDownloadActive > 0)
                 {
                     [torrent startTransfer];
                     if ([torrent isActive])
-                        desiredDownloadActive--;
+                        --desiredDownloadActive;
                     [torrent update];
                 }
             }
             else
             {
-                if (!seed || desiredSeedActive > 0)
+                if (desiredSeedActive > 0)
                 {
                     [torrent startTransfer];
                     if ([torrent isActive])
-                        desiredSeedActive--;
+                        --desiredSeedActive;
                     [torrent update];
                 }
             }
@@ -1726,29 +1726,24 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
     [self updateTorrentHistory];
 }
 
-- (NSInteger) numToStartFromQueue: (BOOL) downloadQueue
+- (NSUInteger) numToStartFromQueue: (BOOL) downloadQueue
 {
     if (![fDefaults boolForKey: downloadQueue ? @"Queue" : @"QueueSeed"])
         return 0;
     
-    NSInteger desired = [fDefaults integerForKey: downloadQueue ? @"QueueDownloadNumber" : @"QueueSeedNumber"];
+    NSUInteger desired = [fDefaults integerForKey: downloadQueue ? @"QueueDownloadNumber" : @"QueueSeedNumber"];
         
     for (Torrent * torrent in fTorrents)
     {
+        if (desired == 0)
+            break;
+        
         if ([torrent isChecking])
-        {
-            desired--;
-            if (desired <= 0)
-                return 0;
-        }
+            --desired;
         else if ([torrent isActive] && ![torrent isStalled] && ![torrent isError])
         {
             if ([torrent allDownloaded] != downloadQueue)
-            {
-                desired--;
-                if (desired <= 0)
-                    return 0;
-            }
+                --desired;
         }
         else;
     }
@@ -1786,7 +1781,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
         [[NSDistributedNotificationCenter defaultCenter] postNotificationName: @"com.apple.DownloadFileFinished"
             object: [[torrent downloadFolder] stringByAppendingPathComponent: [torrent name]]];
         
-        if ([fDefaults boolForKey: @"QueueSeed"] && [self numToStartFromQueue: NO] <= 0)
+        if ([self numToStartFromQueue: NO] == 0)
         {
             [torrent stopTransfer];
             [torrent setWaitToStart: YES];
@@ -1801,7 +1796,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
     Torrent * torrent = [notification object];
     if ([torrent isActive])
     {
-        if ([fDefaults boolForKey: @"Queue"] && [self numToStartFromQueue: YES] <= 0)
+        if ([self numToStartFromQueue: YES] == 0)
         {
             [torrent stopTransfer];
             [torrent setWaitToStart: YES];
@@ -3568,7 +3563,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
                 break;
             default:
                 NSAssert1(NO, @"Unknown sort tag received: %d", [menuItem tag]);
-                return;
+                return NO;
         }
         
         [menuItem setState: [sortType isEqualToString: [fDefaults stringForKey: @"Sort"]] ? NSOnState : NSOffState];
index f07be4fc9e6e37729e343207d5d60fb87d155866..430ce72c926f5f7f3b87517087bf59162f1db27e 100644 (file)
Binary files a/macosx/en.lproj/Localizable.strings and b/macosx/en.lproj/Localizable.strings differ