Perform callbacks in the Torrent class using GCD.

This commit is contained in:
Mitchell Livingston 2013-07-14 14:28:40 +00:00
parent ba465de7d1
commit fefba6c2da
1 changed files with 15 additions and 8 deletions

View File

@ -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)