diff --git a/src/platform_impl/macos/app_state.rs b/src/platform_impl/macos/app_state.rs index 67de6ce6..626b95fc 100644 --- a/src/platform_impl/macos/app_state.rs +++ b/src/platform_impl/macos/app_state.rs @@ -11,7 +11,11 @@ use std::{ time::Instant, }; -use cocoa::{appkit::NSApp, base::nil, foundation::NSString}; +use cocoa::{ + appkit::NSApp, + base::nil, + foundation::{NSAutoreleasePool, NSString}, +}; use crate::{ event::{Event, StartCause}, @@ -277,6 +281,8 @@ impl AppState { unsafe { let _: () = msg_send![NSApp(), stop: nil]; + let pool = NSAutoreleasePool::new(nil); + let windows: *const Object = msg_send![NSApp(), windows]; let window: *const Object = msg_send![windows, objectAtIndex:0]; assert_ne!(window, nil); @@ -292,6 +298,8 @@ impl AppState { let _: () = msg_send![window, setTitle: some_unique_title]; // And restore it. let _: () = msg_send![window, setTitle: title]; + + pool.drain(); }; } HANDLER.update_start_time(); diff --git a/src/platform_impl/macos/event_loop.rs b/src/platform_impl/macos/event_loop.rs index 8469e3ff..57e07b92 100644 --- a/src/platform_impl/macos/event_loop.rs +++ b/src/platform_impl/macos/event_loop.rs @@ -95,12 +95,13 @@ impl<T> EventLoop<T> { F: FnMut(Event<T>, &RootWindowTarget<T>, &mut ControlFlow), { unsafe { - let _pool = NSAutoreleasePool::new(nil); + let pool = NSAutoreleasePool::new(nil); let app = NSApp(); assert_ne!(app, nil); AppState::set_callback(callback, Rc::clone(&self.window_target)); let _: () = msg_send![app, run]; AppState::exit(); + pool.drain(); } }