From fefba6c2da0b869a30e04a85cdfc0284e815765d Mon Sep 17 00:00:00 2001 From: Mitchell Livingston Date: Sun, 14 Jul 2013 14:28:40 +0000 Subject: [PATCH] Perform callbacks in the Torrent class using GCD. --- macosx/Torrent.m | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/macosx/Torrent.m b/macosx/Torrent.m index 77cd050ab..455df51d3 100644 --- a/macosx/Torrent.m +++ b/macosx/Torrent.m @@ -64,32 +64,39 @@ void startQueueCallback(tr_torrent * torrent, void * torrentData) { - [(Torrent *)torrentData performSelectorOnMainThread: @selector(startQueue) withObject: nil waitUntilDone: NO]; + dispatch_async(dispatch_get_main_queue(), ^{ + [(Torrent *)torrentData startQueue]; + }); } void completenessChangeCallback(tr_torrent * torrent, tr_completeness status, bool wasRunning, void * torrentData) { - @autoreleasepool - { + dispatch_async(dispatch_get_main_queue(), ^{ NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt: status], @"Status", [NSNumber numberWithBool: wasRunning], @"WasRunning", nil]; - [(Torrent *)torrentData performSelectorOnMainThread: @selector(completenessChange:) withObject: dict waitUntilDone: NO]; - } + [(Torrent *)torrentData completenessChange: dict]; + }); } void ratioLimitHitCallback(tr_torrent * torrent, void * torrentData) { - [(Torrent *)torrentData performSelectorOnMainThread: @selector(ratioLimitHit) withObject: nil waitUntilDone: NO]; + dispatch_async(dispatch_get_main_queue(), ^{ + [(Torrent *)torrentData ratioLimitHit]; + }); } void idleLimitHitCallback(tr_torrent * torrent, void * torrentData) { - [(Torrent *)torrentData performSelectorOnMainThread: @selector(idleLimitHit) withObject: nil waitUntilDone: NO]; + dispatch_async(dispatch_get_main_queue(), ^{ + [(Torrent *)torrentData idleLimitHit]; + }); } void metadataCallback(tr_torrent * torrent, void * torrentData) { - [(Torrent *)torrentData performSelectorOnMainThread: @selector(metadataRetrieved) withObject: nil waitUntilDone: NO]; + dispatch_async(dispatch_get_main_queue(), ^{ + [(Torrent *)torrentData metadataRetrieved]; + }); } void renameCallback(tr_torrent * torrent, const char * oldPathCharString, const char * newNameCharString, int error, void * contextInfo)