fix: remove event monitor before destroying window (#16056)

This commit is contained in:
Robo 2018-12-14 04:35:19 +05:30 committed by Michelle Tilley
parent 936d088210
commit eb9e468bcc

View file

@ -472,7 +472,8 @@ NativeWindowMac::NativeWindowMac(const mate::Dictionary& options,
}
NativeWindowMac::~NativeWindowMac() {
[NSEvent removeMonitor:wheel_event_monitor_];
if (wheel_event_monitor_)
[NSEvent removeMonitor:wheel_event_monitor_];
}
void NativeWindowMac::SetContentView(views::View* view) {
@ -509,6 +510,13 @@ void NativeWindowMac::Close() {
}
void NativeWindowMac::CloseImmediately() {
// Remove event monitor before destroying window, otherwise the monitor may
// call its callback after window has been destroyed.
if (wheel_event_monitor_) {
[NSEvent removeMonitor:wheel_event_monitor_];
wheel_event_monitor_ = nil;
}
// Retain the child window before closing it. If the last reference to the
// NSWindow goes away inside -[NSWindow close], then bad stuff can happen.
// See e.g. http://crbug.com/616701.