From 7dd5b57851a867e403c9ede3f3113fcbd17ae377 Mon Sep 17 00:00:00 2001 From: Mitchell Livingston Date: Mon, 10 Sep 2012 02:37:29 +0000 Subject: [PATCH] properly retain/release nstimers like any other objective-c object --- macosx/AddWindowController.m | 7 +++++-- macosx/BlocklistScheduler.m | 5 +++-- macosx/Controller.m | 5 +++-- macosx/CreatorWindowController.m | 5 +++-- macosx/MessageWindowController.m | 7 +++++-- macosx/PortChecker.m | 6 ++++-- macosx/PrefsController.m | 4 ++-- macosx/StatsWindowController.m | 4 +++- 8 files changed, 28 insertions(+), 15 deletions(-) diff --git a/macosx/AddWindowController.m b/macosx/AddWindowController.m index b80f6e2ca..706fbf67e 100644 --- a/macosx/AddWindowController.m +++ b/macosx/AddWindowController.m @@ -133,8 +133,8 @@ [fLocationImageView setImage: nil]; } - fTimer = [NSTimer scheduledTimerWithTimeInterval: UPDATE_SECONDS target: self - selector: @selector(updateFiles) userInfo: nil repeats: YES]; + fTimer = [[NSTimer scheduledTimerWithTimeInterval: UPDATE_SECONDS target: self + selector: @selector(updateFiles) userInfo: nil repeats: YES] retain]; [self updateFiles]; } @@ -150,6 +150,7 @@ [[NSNotificationCenter defaultCenter] removeObserver: self]; [fTimer invalidate]; + [fTimer release]; [fDestination release]; [fTorrentFile release]; @@ -220,6 +221,7 @@ - (BOOL) windowShouldClose: (id) window { [fTimer invalidate]; + [fTimer release]; fTimer = nil; [fFileController setTorrent: nil]; //avoid a crash when window tries to update @@ -331,6 +333,7 @@ - (void) confirmAdd { [fTimer invalidate]; + [fTimer release]; fTimer = nil; [fTorrent setGroupValue: fGroupValue]; diff --git a/macosx/BlocklistScheduler.m b/macosx/BlocklistScheduler.m index 0fdf78ef3..430c51c8b 100644 --- a/macosx/BlocklistScheduler.m +++ b/macosx/BlocklistScheduler.m @@ -69,8 +69,7 @@ BlocklistScheduler * fScheduler = nil; NSDate * useDate = lastUpdateDate ? [lastUpdateDate laterDate: closeDate] : closeDate; - fTimer = [[NSTimer alloc] initWithFireDate: useDate interval: 0 target: self selector: @selector(runUpdater) - userInfo: nil repeats: NO]; + fTimer = [[NSTimer alloc] initWithFireDate: useDate interval: 0 target: self selector: @selector(runUpdater) userInfo: nil repeats: NO]; //current run loop usually means a second update won't work NSRunLoop * loop = [NSRunLoop mainRunLoop]; @@ -82,6 +81,7 @@ BlocklistScheduler * fScheduler = nil; - (void) cancelSchedule { [fTimer invalidate]; + [fTimer release]; fTimer = nil; } @@ -91,6 +91,7 @@ BlocklistScheduler * fScheduler = nil; - (void) runUpdater { + [fTimer release]; fTimer = nil; [BlocklistDownloader downloader]; } diff --git a/macosx/Controller.m b/macosx/Controller.m index 3305bb0e9..34adce892 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -537,8 +537,8 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy //timer to update the interface every second [self updateUI]; - fTimer = [NSTimer scheduledTimerWithTimeInterval: UPDATE_UI_SECONDS target: self - selector: @selector(updateUI) userInfo: nil repeats: YES]; + fTimer = [[NSTimer scheduledTimerWithTimeInterval: UPDATE_UI_SECONDS target: self + selector: @selector(updateUI) userInfo: nil repeats: YES] retain]; [[NSRunLoop currentRunLoop] addTimer: fTimer forMode: NSModalPanelRunLoopMode]; [[NSRunLoop currentRunLoop] addTimer: fTimer forMode: NSEventTrackingRunLoopMode]; @@ -682,6 +682,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy [[NSNotificationCenter defaultCenter] removeObserver: self]; [fTimer invalidate]; + [fTimer release]; if (fAutoImportTimer) { diff --git a/macosx/CreatorWindowController.m b/macosx/CreatorWindowController.m index 6f247e5ad..95eaef70f 100644 --- a/macosx/CreatorWindowController.m +++ b/macosx/CreatorWindowController.m @@ -206,6 +206,7 @@ tr_metaInfoBuilderFree(fInfo); [fTimer invalidate]; + [fTimer release]; [super dealloc]; } @@ -551,8 +552,7 @@ tr_makeMetaInfo(fInfo, [[fLocation path] UTF8String], trackerInfo, [fTrackers count], [[fCommentView string] UTF8String], [fPrivateCheck state] == NSOnState); tr_free(trackerInfo); - fTimer = [NSTimer scheduledTimerWithTimeInterval: 0.1 target: self selector: @selector(checkProgress) - userInfo: nil repeats: YES]; + fTimer = [[NSTimer scheduledTimerWithTimeInterval: 0.1 target: self selector: @selector(checkProgress) userInfo: nil repeats: YES] retain]; } - (void) checkProgress @@ -560,6 +560,7 @@ if (fInfo->isDone) { [fTimer invalidate]; + [fTimer release]; fTimer = nil; NSAlert * alert; diff --git a/macosx/MessageWindowController.m b/macosx/MessageWindowController.m index e360d75fe..827853223 100644 --- a/macosx/MessageWindowController.m +++ b/macosx/MessageWindowController.m @@ -139,6 +139,7 @@ [[NSNotificationCenter defaultCenter] removeObserver: self]; [fTimer invalidate]; + [fTimer release]; [fLock release]; [fMessages release]; @@ -153,7 +154,7 @@ { if (!fTimer) { - fTimer = [NSTimer scheduledTimerWithTimeInterval: UPDATE_SECONDS target: self selector: @selector(updateLog:) userInfo: nil repeats: YES]; + fTimer = [[NSTimer scheduledTimerWithTimeInterval: UPDATE_SECONDS target: self selector: @selector(updateLog:) userInfo: nil repeats: YES] retain]; [self updateLog: nil]; } } @@ -161,6 +162,7 @@ - (void) windowWillClose: (id)sender { [fTimer invalidate]; + [fTimer release]; fTimer = nil; } @@ -175,7 +177,8 @@ - (void) window: (NSWindow *) window didDecodeRestorableState: (NSCoder *) coder { [fTimer invalidate]; - fTimer = [NSTimer scheduledTimerWithTimeInterval: UPDATE_SECONDS target: self selector: @selector(updateLog:) userInfo: nil repeats: YES]; + [fTimer release]; + fTimer = [[NSTimer scheduledTimerWithTimeInterval: UPDATE_SECONDS target: self selector: @selector(updateLog:) userInfo: nil repeats: YES] retain]; [self updateLog: nil]; } diff --git a/macosx/PortChecker.m b/macosx/PortChecker.m index 611ca42da..8de507cb5 100644 --- a/macosx/PortChecker.m +++ b/macosx/PortChecker.m @@ -45,8 +45,7 @@ fStatus = PORT_STATUS_CHECKING; - fTimer = [NSTimer scheduledTimerWithTimeInterval: CHECK_FIRE target: self selector: @selector(startProbe:) - userInfo: [NSNumber numberWithInteger: portNumber] repeats: NO]; + fTimer = [[NSTimer scheduledTimerWithTimeInterval: CHECK_FIRE target: self selector: @selector(startProbe:) userInfo: [NSNumber numberWithInteger: portNumber] repeats: NO] retain]; if (!delay) [fTimer fire]; } @@ -57,6 +56,7 @@ - (void) dealloc { [fTimer invalidate]; + [fTimer release]; [fConnection release]; [fPortProbeData release]; @@ -71,6 +71,7 @@ - (void) cancelProbe { [fTimer invalidate]; + [fTimer release]; fTimer = nil; [fConnection cancel]; @@ -124,6 +125,7 @@ - (void) startProbe: (NSTimer *) timer { + [fTimer release]; fTimer = nil; NSURLRequest * portProbeRequest = [NSURLRequest requestWithURL: [NSURL URLWithString: CHECKER_URL([[timer userInfo] integerValue])] diff --git a/macosx/PrefsController.m b/macosx/PrefsController.m index 69c072f95..52a29e360 100644 --- a/macosx/PrefsController.m +++ b/macosx/PrefsController.m @@ -146,6 +146,7 @@ [[NSNotificationCenter defaultCenter] removeObserver: self]; [fPortStatusTimer invalidate]; + [fPortStatusTimer release]; if (fPortChecker) { [fPortChecker cancelProbe]; @@ -201,8 +202,7 @@ fNatStatus = -1; [self updatePortStatus]; - fPortStatusTimer = [NSTimer scheduledTimerWithTimeInterval: 5.0 target: self - selector: @selector(updatePortStatus) userInfo: nil repeats: YES]; + fPortStatusTimer = [[NSTimer scheduledTimerWithTimeInterval: 5.0 target: self selector: @selector(updatePortStatus) userInfo: nil repeats: YES] retain]; //set peer connections [fPeersGlobalField setIntValue: [fDefaults integerForKey: @"PeersTotal"]]; diff --git a/macosx/StatsWindowController.m b/macosx/StatsWindowController.m index 51a4d6877..db872b349 100644 --- a/macosx/StatsWindowController.m +++ b/macosx/StatsWindowController.m @@ -63,7 +63,7 @@ tr_session * fLib = NULL; { [self updateStats]; - fTimer = [NSTimer scheduledTimerWithTimeInterval: UPDATE_SECONDS target: self selector: @selector(updateStats) userInfo: nil repeats: YES]; + fTimer = [[NSTimer scheduledTimerWithTimeInterval: UPDATE_SECONDS target: self selector: @selector(updateStats) userInfo: nil repeats: YES] retain]; [[NSRunLoop currentRunLoop] addTimer: fTimer forMode: NSModalPanelRunLoopMode]; [[NSRunLoop currentRunLoop] addTimer: fTimer forMode: NSEventTrackingRunLoopMode]; @@ -133,6 +133,8 @@ tr_session * fLib = NULL; - (void) windowWillClose: (id) sender { [fTimer invalidate]; + [fTimer release]; + fTimer = nil; [fStatsWindowInstance autorelease]; fStatsWindowInstance = nil;