From 5504294a6a422b1d788fb0e8d795f144e590ff25 Mon Sep 17 00:00:00 2001 From: Matt Way Date: Wed, 29 Nov 2017 17:10:43 +1000 Subject: [PATCH] Replaces tracking removal with proper mem management --- atom/browser/ui/tray_icon_cocoa.mm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/atom/browser/ui/tray_icon_cocoa.mm b/atom/browser/ui/tray_icon_cocoa.mm index ab1c00742522..6c2def356cd1 100644 --- a/atom/browser/ui/tray_icon_cocoa.mm +++ b/atom/browser/ui/tray_icon_cocoa.mm @@ -33,7 +33,7 @@ const CGFloat kVerticalTitleMargin = 2; base::scoped_nsobject title_; base::scoped_nsobject attributedTitle_; base::scoped_nsobject statusItem_; - NSTrackingArea *trackingArea_; + base::scoped_nsobject trackingArea_; } @end // @interface StatusItemView @@ -62,11 +62,11 @@ const CGFloat kVerticalTitleMargin = 2; [self updateDimensions]; // Add NSTrackingArea for listening to mouseEnter, mouseExit, and mouseMove events - trackingArea_ = [[[NSTrackingArea alloc] + trackingArea_.reset([[NSTrackingArea alloc] initWithRect:[self bounds] options:NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingActiveAlways owner:self - userInfo:nil] autorelease]; + userInfo:nil]); [self addTrackingArea:trackingArea_]; } return self; @@ -80,7 +80,10 @@ const CGFloat kVerticalTitleMargin = 2; - (void)removeItem { // Turn off tracking events to prevent crash - [self removeTrackingArea:trackingArea_]; + if (trackingArea_) { + [self removeTrackingArea:trackingArea_]; + trackingArea_.reset(); + } [[NSStatusBar systemStatusBar] removeStatusItem:statusItem_]; statusItem_.reset(); }