Call handlers on the main thread synchronously to enhance responsivity (fix #462)
This commit is contained in:
parent
f07a34da59
commit
3a6d9481c9
|
@ -50,7 +50,7 @@ static char operationKey;
|
|||
id<SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadWithURL:url options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
|
||||
{
|
||||
if (!wself) return;
|
||||
void (^block)(void) = ^
|
||||
dispatch_main_sync_safe(^
|
||||
{
|
||||
__strong MKAnnotationView *sself = wself;
|
||||
if (!sself) return;
|
||||
|
@ -62,15 +62,7 @@ static char operationKey;
|
|||
{
|
||||
completedBlock(image, error, cacheType);
|
||||
}
|
||||
};
|
||||
if ([NSThread isMainThread])
|
||||
{
|
||||
block();
|
||||
}
|
||||
else
|
||||
{
|
||||
dispatch_sync(dispatch_get_main_queue(), block);
|
||||
}
|
||||
});
|
||||
}];
|
||||
objc_setAssociatedObject(self, &operationKey, operation, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||
}
|
||||
|
|
|
@ -280,7 +280,7 @@ static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week
|
|||
[self.memCache setObject:diskImage forKey:key cost:cost];
|
||||
}
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^
|
||||
dispatch_main_sync_safe(^
|
||||
{
|
||||
doneBlock(diskImage, SDImageCacheTypeDisk);
|
||||
});
|
||||
|
@ -479,7 +479,7 @@ static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week
|
|||
|
||||
if (completionBlock)
|
||||
{
|
||||
dispatch_async(dispatch_get_main_queue(), ^
|
||||
dispatch_main_sync_safe(^
|
||||
{
|
||||
completionBlock(fileCount, totalSize);
|
||||
});
|
||||
|
|
|
@ -42,3 +42,13 @@
|
|||
#endif
|
||||
|
||||
extern inline UIImage *SDScaledImageForKey(NSString *key, UIImage *image);
|
||||
|
||||
#define dispatch_main_sync_safe(block)\
|
||||
if ([NSThread isMainThread])\
|
||||
{\
|
||||
block();\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
dispatch_sync(dispatch_get_main_queue(), block);\
|
||||
}
|
||||
|
|
|
@ -230,7 +230,7 @@
|
|||
UIImage *scaledImage = [self scaledImageForKey:self.request.URL.absoluteString image:image];
|
||||
image = [UIImage decodedImageWithImage:scaledImage];
|
||||
CGImageRelease(partialImageRef);
|
||||
dispatch_async(dispatch_get_main_queue(), ^
|
||||
dispatch_main_sync_safe(^
|
||||
{
|
||||
if (self.completedBlock)
|
||||
{
|
||||
|
|
|
@ -163,7 +163,7 @@
|
|||
{
|
||||
UIImage *transformedImage = [self.delegate imageManager:self transformDownloadedImage:downloadedImage withURL:url];
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^
|
||||
dispatch_main_sync_safe(^
|
||||
{
|
||||
completedBlock(transformedImage, nil, SDImageCacheTypeNone, finished);
|
||||
});
|
||||
|
|
|
@ -49,7 +49,7 @@ static char operationKey;
|
|||
id<SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadWithURL:url options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
|
||||
{
|
||||
if (!wself) return;
|
||||
void (^block)(void) = ^
|
||||
dispatch_main_sync_safe(^
|
||||
{
|
||||
__strong UIButton *sself = wself;
|
||||
if (!sself) return;
|
||||
|
@ -61,15 +61,7 @@ static char operationKey;
|
|||
{
|
||||
completedBlock(image, error, cacheType);
|
||||
}
|
||||
};
|
||||
if ([NSThread isMainThread])
|
||||
{
|
||||
block();
|
||||
}
|
||||
else
|
||||
{
|
||||
dispatch_sync(dispatch_get_main_queue(), block);
|
||||
}
|
||||
});
|
||||
}];
|
||||
objc_setAssociatedObject(self, &operationKey, operation, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||
}
|
||||
|
@ -112,7 +104,7 @@ static char operationKey;
|
|||
id<SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadWithURL:url options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
|
||||
{
|
||||
if (!wself) return;
|
||||
void (^block)(void) = ^
|
||||
dispatch_main_sync_safe(^
|
||||
{
|
||||
__strong UIButton *sself = wself;
|
||||
if (!sself) return;
|
||||
|
@ -124,15 +116,7 @@ static char operationKey;
|
|||
{
|
||||
completedBlock(image, error, cacheType);
|
||||
}
|
||||
};
|
||||
if ([NSThread isMainThread])
|
||||
{
|
||||
block();
|
||||
}
|
||||
else
|
||||
{
|
||||
dispatch_sync(dispatch_get_main_queue(), block);
|
||||
}
|
||||
});
|
||||
}];
|
||||
objc_setAssociatedObject(self, &operationKey, operation, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ static char operationArrayKey;
|
|||
id<SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
|
||||
{
|
||||
if (!wself) return;
|
||||
void (^block)(void) = ^
|
||||
dispatch_main_sync_safe(^
|
||||
{
|
||||
__strong UIImageView *sself = wself;
|
||||
if (!sself) return;
|
||||
|
@ -69,15 +69,7 @@ static char operationArrayKey;
|
|||
{
|
||||
completedBlock(image, error, cacheType);
|
||||
}
|
||||
};
|
||||
if ([NSThread isMainThread])
|
||||
{
|
||||
block();
|
||||
}
|
||||
else
|
||||
{
|
||||
dispatch_sync(dispatch_get_main_queue(), block);
|
||||
}
|
||||
});
|
||||
}];
|
||||
objc_setAssociatedObject(self, &operationKey, operation, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||
}
|
||||
|
@ -95,7 +87,7 @@ static char operationArrayKey;
|
|||
id<SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadWithURL:logoImageURL options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
|
||||
{
|
||||
if (!wself) return;
|
||||
void (^block)(void) = ^
|
||||
dispatch_main_sync_safe(^
|
||||
{
|
||||
__strong UIImageView *sself = wself;
|
||||
[sself stopAnimating];
|
||||
|
@ -112,15 +104,7 @@ static char operationArrayKey;
|
|||
[sself setNeedsLayout];
|
||||
}
|
||||
[sself startAnimating];
|
||||
};
|
||||
if ([NSThread isMainThread])
|
||||
{
|
||||
block();
|
||||
}
|
||||
else
|
||||
{
|
||||
dispatch_sync(dispatch_get_main_queue(), block);
|
||||
}
|
||||
});
|
||||
}];
|
||||
[operationsArray addObject:operation];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue