1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2024-12-21 23:32:35 +00:00

only use a single concurrent queue for timeMachineExclude instead of one queue per torrent (#6523)

* only use a single concurrent queue for timeMachineExclude instead of one queue per torrent

* moving to +initialize for now (will become a `static let` in Swift anyway)

* DISPATCH_QUEUE_SERIAL because DISPATCH_QUEUE_CONCURRENT is limited to 64 simultaneous torrent dispatch_async

* `static` is better than `global`, to make it private to a single compilation unit
This commit is contained in:
Cœur 2024-01-29 05:49:06 +01:00 committed by GitHub
parent a51f08e532
commit 81008a1692
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 23 additions and 9 deletions

View file

@ -345,6 +345,9 @@ static void removeKeRangerRansomware()
+ (void)initialize
{
if (self != [Controller self])
return;
removeKeRangerRansomware();
//make sure another Transmission.app isn't running already

View file

@ -56,7 +56,7 @@ typedef NS_ENUM(NSUInteger, TrackerSegmentTag) {
@end
NSMutableSet* creatorWindowControllerSet = nil;
static NSMutableSet* creatorWindowControllerSet;
@implementation CreatorWindowController

View file

@ -23,6 +23,8 @@ NSString* const kTorrentDidChangeGroupNotification = @"TorrentDidChangeGroup";
static int const kETAIdleDisplaySec = 2 * 60;
static dispatch_queue_t timeMachineExcludeQueue;
@interface Torrent ()
@property(nonatomic, readonly) tr_torrent* fHandle;
@ -45,8 +47,6 @@ static int const kETAIdleDisplaySec = 2 * 60;
@property(nonatomic) BOOL fResumeOnWake;
@property(nonatomic) dispatch_queue_t timeMachineExcludeQueue;
- (void)renameFinished:(BOOL)success
nodes:(NSArray<FileListNode*>*)nodes
completionHandler:(void (^)(BOOL))completionHandler
@ -98,6 +98,15 @@ bool trashDataFile(char const* filename, void* /*user_data*/, tr_error* error)
@implementation Torrent
+ (void)initialize
{
if (self != [Torrent self])
return;
// DISPATCH_QUEUE_SERIAL because DISPATCH_QUEUE_CONCURRENT is limited to 64 simultaneous torrent dispatch_async
timeMachineExcludeQueue = dispatch_queue_create("updateTimeMachineExclude", DISPATCH_QUEUE_SERIAL);
}
- (instancetype)initWithPath:(NSString*)path
location:(NSString*)location
deleteTorrentFile:(BOOL)torrentDelete
@ -1826,7 +1835,6 @@ bool trashDataFile(char const* filename, void* /*user_data*/, tr_error* error)
name:@"GroupValueRemoved"
object:nil];
_timeMachineExcludeQueue = dispatch_queue_create("updateTimeMachineExclude", DISPATCH_QUEUE_CONCURRENT);
[self update];
[self updateTimeMachineExclude];
@ -2157,7 +2165,7 @@ bool trashDataFile(char const* filename, void* /*user_data*/, tr_error* error)
NSString* path;
if ((path = self.dataLocation))
{
dispatch_async(_timeMachineExcludeQueue, ^{
dispatch_async(timeMachineExcludeQueue, ^{
CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:path];
CSBackupSetItemExcluded(url, exclude, false);
});

View file

@ -20,6 +20,10 @@ static CGFloat const kPaddingBetweenLines = 1.0;
static CGFloat const kPaddingBetweenLinesOnSameLine = 4.0;
static CGFloat const kCountWidth = 60.0;
// make the favicons accessible to all tracker cells
static NSCache* fTrackerIconCache;
static NSMutableSet* fTrackerIconLoading;
@interface TrackerCell ()
@property(nonatomic, readonly) NSImage* favIcon;
@ -31,12 +35,11 @@ static CGFloat const kCountWidth = 60.0;
@implementation TrackerCell
//make the favicons accessible to all tracker cells
NSCache* fTrackerIconCache;
NSMutableSet* fTrackerIconLoading;
+ (void)initialize
{
if (self != [TrackerCell self])
return;
fTrackerIconCache = [[NSCache alloc] init];
fTrackerIconLoading = [[NSMutableSet alloc] init];
}