From d55d2ec85a769fb5d41b61e3b64ee773bf32880c Mon Sep 17 00:00:00 2001 From: Ken Thomases Date: Wed, 18 Sep 2013 13:00:51 -0500 Subject: [PATCH] winemac: Move memory management of liveResizeDisplayTimer into property setter. --- dlls/winemac.drv/cocoa_window.m | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index e8ac79c1c9b..d833d04398d 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -158,6 +158,8 @@ @interface WineWindow () @property (assign, nonatomic) void* imeData; @property (nonatomic) BOOL commandDone; +@property (retain, nonatomic) NSTimer* liveResizeDisplayTimer; + - (void) updateColorSpace; - (BOOL) becameEligibleParentOrChild; @@ -468,6 +470,7 @@ @implementation WineWindow @synthesize colorKeyed, colorKeyRed, colorKeyGreen, colorKeyBlue; @synthesize usePerPixelAlpha; @synthesize imeData, commandDone; + @synthesize liveResizeDisplayTimer; + (WineWindow*) createWindowWithFeatures:(const struct macdrv_window_features*)wf windowFrame:(NSRect)window_frame @@ -1183,6 +1186,16 @@ - (void) setShape:(NSBezierPath*)newShape [self checkTransparency]; } + - (void) setLiveResizeDisplayTimer:(NSTimer*)newTimer + { + if (newTimer != liveResizeDisplayTimer) + { + [liveResizeDisplayTimer invalidate]; + [liveResizeDisplayTimer release]; + liveResizeDisplayTimer = [newTimer retain]; + } + } + - (void) makeFocused:(BOOL)activate { [self orderBelow:nil orAbove:nil activate:activate]; @@ -1463,9 +1476,7 @@ - (void)windowDidDeminiaturize:(NSNotification *)notification - (void) windowDidEndLiveResize:(NSNotification *)notification { - [liveResizeDisplayTimer invalidate]; - [liveResizeDisplayTimer release]; - liveResizeDisplayTimer = nil; + self.liveResizeDisplayTimer = nil; } - (void)windowDidMiniaturize:(NSNotification *)notification @@ -1587,13 +1598,11 @@ - (void) windowWillStartLiveResize:(NSNotification *)notification // // We address this by "manually" asking our windows to check if they need // redrawing every so often (during live resize only). - [self windowDidEndLiveResize:nil]; - liveResizeDisplayTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/30.0 - target:self - selector:@selector(displayIfNeeded) - userInfo:nil - repeats:YES]; - [liveResizeDisplayTimer retain]; + self.liveResizeDisplayTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/30.0 + target:self + selector:@selector(displayIfNeeded) + userInfo:nil + repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:liveResizeDisplayTimer forMode:NSRunLoopCommonModes]; }